def test_binary(multiple_out=False, n_epochs=1000, optimizer='bfgs'): """ Test RNN with binary outputs. """ n_hidden = 10 n_in = 5 if multiple_out: n_out = 2 else: n_out = 1 n_steps = 10 n_seq = 10 # per batch n_batches = 50 np.random.seed(0) # simple lag test seq = np.random.randn(n_steps, n_seq * n_batches, n_in) targets = np.zeros((n_steps, n_seq * n_batches, n_out)) # whether lag 1 (dim 3) is greater than lag 2 (dim 0) targets[2:, :, 0] = np.cast[np.int](seq[1:-1, :, 3] > seq[:-2, :, 0]) # pdb.set_trace() if multiple_out: # whether product of lag 1 (dim 4) and lag 1 (dim 2) # is less than lag 2 (dim 0) targets[2:, :, 1] = np.cast[np.int]( (seq[1:-1, :, 4] * seq[1:-1, :, 2]) > seq[:-2, :, 0]) model = MetaRNN_minibatch(n_in=n_in, n_hidden=n_hidden, n_out=n_out, learning_rate=0.005, learning_rate_decay=0.999, n_epochs=n_epochs, batch_size=n_seq, activation='tanh', output_type='binary') model.fit(seq, targets, validate_every=100, compute_zero_one=True, optimizer=optimizer) seqs = xrange(10)
def train_RNN_minibatch(dataset=None, n_hidden=1500, steps=30, batch_size=30, n_epochs=100, optimizer='sgd'): # train_set_x, train_set_y = dataset.get_batch_design(0, steps, dataset.phase2['train'], type='numpy_dense', isInt=True) # valid_set_x, valid_set_y = dataset.get_batch_design(0, steps, dataset.phase2['valid'], type='numpy_dense', isInt=True) train_set_x, train_set_y = dataset.phase2['train']['x'], dataset.phase2['train']['y'] valid_set_x, valid_set_y = dataset.phase2['valid']['x'], dataset.phase2['valid']['y'] test_set_x, test_set_y = dataset.phase2['test']['x'], dataset.phase2['test']['y'] # train_set_y = np.asarray(valid_set_x, dtype=np.int32) # valid_set_x, valid_set_y = dataset.phase2['valid']['x'], dataset.phase2['valid']['y'] # test_set_x, test_set_y = dataset.get_batch_design(0, batch_size, dataset.phase2['test'], type='numpy_dense') print train_set_x.shape[1] model = MetaRNN_minibatch(n_in=train_set_x.shape[1], n_hidden=n_hidden, n_out=1, learning_rate=0.01, learning_rate_decay=0.99, n_epochs=n_epochs, activation='tanh', L2_reg=0.01, batch_size=batch_size, output_type='binary' ) model.fit([train_set_x], [train_set_y], X_test=[valid_set_x], Y_test=[valid_set_y], validate_every=1, compute_zero_one=True, optimizer=optimizer) pdb.set_trace() return model
def train_RNN_minibatch(dataset=None, n_hidden=1500, steps=30, batch_size=30, n_epochs=100, optimizer='sgd'): # train_set_x, train_set_y = dataset.get_batch_design(0, steps, dataset.phase2['train'], type='numpy_dense', isInt=True) # valid_set_x, valid_set_y = dataset.get_batch_design(0, steps, dataset.phase2['valid'], type='numpy_dense', isInt=True) train_set_x, train_set_y = dataset.phase2['train']['x'], dataset.phase2[ 'train']['y'] valid_set_x, valid_set_y = dataset.phase2['valid']['x'], dataset.phase2[ 'valid']['y'] test_set_x, test_set_y = dataset.phase2['test']['x'], dataset.phase2[ 'test']['y'] # train_set_y = np.asarray(valid_set_x, dtype=np.int32) # valid_set_x, valid_set_y = dataset.phase2['valid']['x'], dataset.phase2['valid']['y'] # test_set_x, test_set_y = dataset.get_batch_design(0, batch_size, dataset.phase2['test'], type='numpy_dense') print train_set_x.shape[1] model = MetaRNN_minibatch(n_in=train_set_x.shape[1], n_hidden=n_hidden, n_out=1, learning_rate=0.01, learning_rate_decay=0.99, n_epochs=n_epochs, activation='tanh', L2_reg=0.01, batch_size=batch_size, output_type='binary') model.fit([train_set_x], [train_set_y], X_test=[valid_set_x], Y_test=[valid_set_y], validate_every=1, compute_zero_one=True, optimizer=optimizer) pdb.set_trace() return model