Exemple #1
0
def test_cache(composers):
    all_pieces = dict()
    for composer in composers:
        start = time.time()
        pieces = data.getpices(path="../midis", composer=composer)
        print("Loading {} {} pieces took {} seconds".format(
            composer, len(pieces),
            time.time() - start))
        all_pieces.update(pieces)

    midi_cache = data.initialize_cache(all_pieces)
    gen = data.generate_batch(midi_cache, batch_size=10)

    for i in range(5):
        pre_start = time.time()
        batch_in, batch_out = next(gen)

        print("One batch took {}".format(time.time() - pre_start))
        print("Batch iput is size: ({}, {}, {})".format(
            len(batch_in), len(batch_in[0]), len(batch_in[0][0])))
        print("Batch output is size: ({}, {}, {})".format(
            len(batch_out), len(batch_out[0]), len(batch_out[0][0])))
Exemple #2
0
import model
import data

if __name__ == '__main__':

    # load midi files as statematrix, if no file will download from "http://www.piano-midi.de"
    pieces = data.getpices(mode='all')

    # Building model
    print('Building model')
    music_model = model.biaxial_model(t_layer_sizes=[300, 300],
                                      n_layer_sizes=[100, 50],
                                      trainer=tf.train.AdamOptimizer())

    print('Start training')
    music_model.train(pieces, batch_size=10, max_epoch=10000, predict_freq=200)
                        required=True)
    parser.add_argument("--cache_dir",
                        help="Path to cache file",
                        default='cache.pkl')

    args = parser.parse_args()

    cache_name = args.cache_dir
    model_name = args.model_name

    if not os.path.exists(cache_name):
        composers = input("Enter composers separated by spaces: ").split()
        all_pieces = {}

        if len(composers) == 0:
            all_pieces.update(data.getpices(path="midis", mode='all'))
        else:
            for c in composers:
                all_pieces.update(data.getpices(path="../midis", composer=c))

        cache = data.initialize_cache(all_pieces, save_loc=cache_name)
    else:
        with open(cache_name, 'rb') as f:
            cache = pickle.load(f)

    # Building model
    print('Building model')
    music_model = model.biaxial_model(t_layer_sizes=[300, 300],
                                      n_layer_sizes=[100, 50],
                                      trainer=tf.train.RMSPropOptimizer(0.005))
                        help="Path to cache file",
                        default='../output/cache.pkl')

    args = parser.parse_args()

    cache_name = args.cache_dir
    model_name = args.model_name

    if not os.path.exists(cache_name):
        composers = input(
            "Enter composers separated by spaces, no input means all music: "
        ).split()
        all_pieces = {}

        if len(composers) == 0:
            all_pieces.update(data.getpices(path="../data/midis", mode='all'))
        elif composers[0] == 'pop':
            all_pieces.update(
                data.getpices(path='../data/pop_midis', mode='all'))
        else:
            for c in composers:
                all_pieces.update(
                    data.getpices(path="../data/midis", composer=c))

        cache = data.initialize_cache(all_pieces, save_loc=cache_name)
    else:
        with open(cache_name, 'rb') as f:
            cache = pickle.load(f)

    # Building model
    print('Building model')