inputs_v = seq_out[step_id:(step_id+bptt_steps)] elif len(seq_out)>0: for b_id in xrange(batch_size): if p_sub > np.random.random_sample(): for seq_id in xrange(bptt_steps): inputs_v[seq_id][b_id, :] = seq_out[step_id + seq_id][b_id, :] feed_dict = {k: v for k, v in zip(inputs, inputs_v) } feed_dict[state] = state_v feed_dict.update({k: v for k, v in zip(targets, targets_v)}) outputs_v, state_v, loss_v, _ = sess.run([outputs, finstate, loss, train_step], feed_dict) new_seq_out += outputs_v losses.append(loss_v) seq_out = new_seq_out batch_ids += forecast_step gc.collect() print "Epoch {}, learning rate {}".format(e, ep_lrate), "train loss {}".format(sum(losses)/float(len(losses))) if e % 100 == 0 and e > 0: print "Generating sample" generated = generate() generated = np.asarray(generated).reshape(len(generated), input_size) cm = ConvModel.deserialize() waveform = cm.restore_hidden(generated, sess = sess) cm.save_waveform_as(waveform, 0, env.run("{}_generated.wav".format(e))) print "Saving model {}".format(saver.save(sess, model_fname))