tree.add_layer(FullyConnected((512, 1, 1, 1)))
tree.add_layer(PReLULayer())
tree.add_layer(FullyConnected((512, 1, 1, 1)))
tree.add_layer(PReLULayer())
tree.add_layer(FullyConnected())
tree.add_input(X_reward[0])
tree.add_input(X_reward[1])

model = Model()
model.set_tree(tree)
model.set_loss(Losses.MeanSquared())
model.add_output(y_reward)
learning_rate = 0.00002
model.set_optimizer(Optimizers.RMSprop(learning_rate=learning_rate))

model.compile(X_reward, y_reward, initialize_params=True)
file = open('reward_model_params_vec.pk', 'rb')
params = pickle.load(file)
file.close()
model.set_params_as_vec(params)
model.compile(X_reward, y_reward, initialize_params=False)

'''ok.save_model(model, 'okapi_reward_model.pk')
model = ok.load_model('okapi_reward_model.pk')'''
# model.set_dream_optimizer(Optimizers.RMSprop(learning_rate=0.0001, momentum=0.99))

preds = model.predict_dream([None, np.array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0])], [(28, 28)], max_dream_length=100)
# print(model.predict([preds[0], np.asarray([1, 0, 0, 0, 0, 0, 0, 0, 0, 0])]))
pyplot.imshow(np.reshape(preds[0], (28, 28)), interpolation='nearest', cmap='Greys')
# pyplot.imshow(np.reshape(X_train[[0]], (28, 28)), interpolation='nearest', cmap='Greys')
pyplot.show()
示例#2
0
num_generations = 100
rm_p = 0.8
init_mut_p = 1e-5
init_mut_std = 1e-3
init_cross_p = 0.7

model = Model()
model.add(Convolutional(num_filters, filter_size, filter_size, pad=pad))
model.add(ActivationLayer(Activations.tanh))
model.add(MaxPooling(pool_size, pool_size))
model.add(PReLULayer())
model.add(Dropout(dropout_p))
model.add(FullyConnected(bias_initializer=Initializers.glorot_uniform))
model.add(ActivationLayer(Activations.alt_softmax))

model.compile(X_train, y_train)

X_batches, y_batches, num_batches = \
    ok.make_batches(X_train, y_train, batch_size)


def initialize(population_size):
    population = []
    for i in range(population_size):
        model.randomize_params(X_train, y_train)
        individual = {'genome': model.get_params_as_vec()}
        individual['genome'] = np.append(individual['genome'], [init_mut_std, init_mut_p, init_cross_p])
        population.append(individual)
    return population

tree.add_layer(PReLULayer())
tree.add_layer(FullyConnected((512, 1, 1, 1)))
tree.add_layer(PReLULayer())
tree.add_layer(FullyConnected((512, 1, 1, 1)))
tree.add_layer(PReLULayer())
tree.add_layer(FullyConnected())
tree.add_layer(ActivationLayer(Activations.tanh))
tree.add_input(X_reward[0])
tree.add_input(X_reward[1])

model = Model()
model.set_tree(tree)
model.set_loss(Losses.MeanSquared())
model.set_optimizer(Optimizers.RMSprop(learning_rate=0.00005))
model.add_output(y_reward)
model.compile(X_reward, y_reward)

model.train(X_reward, y_reward, 24)
# print(model.predict([X_train[[0]], y_train[0]]))
# print(model.predict([X_train[[0]], np.asarray([1, 0, 0, 0, 0, 0, 0, 0, 0, 0])]))
# prediction = model.predict_dream([X_test, None], X_reward[1][[0]].shape)
X_batches, y_batches, num_batches = ok.make_batches([X_train], y_train, batch_size=10000)
for i in range(12):
    for i, [X_batch, y_batch] in enumerate(zip(X_batches, y_batches)):
        accuracy, preds = model.get_dream_accuracy([X_batch[0], None], y_batch)
        preds = preds[0]
        print('Accuracy: {}%'.format(accuracy))
        preds_reward = reward(preds.reshape(preds.shape[0], preds.shape[1]).astype('float32'),
                y_batch.reshape(preds.shape[0], preds.shape[1]).astype('float32'))
        X_reward[0] = np.append(X_reward[0], X_batch[0], axis=0)
        X_reward[1] = np.append(X_reward[1], preds, axis=0)