Вывод скрытого слоя для каждой эпохи и сохранение его в списке в кератах? - PullRequest
0 голосов
/ 07 октября 2019

У меня есть keras MLP с одним скрытым слоем. Я использую многослойный персептрон с определенным количеством узлов в одном скрытом слое. Я хочу извлечь значение активации для всех нейронов этого скрытого слоя при прохождении пакета, и я хочу сделать это для каждой эпохи и сохранить его в списке для изучения. Мое представление похоже на следующее.

class myNetwork:
# Architecture of our neural network.
def multilayerPerceptron(self, Num_Nodes_hidden,input_features,output_dims,activation_function = 'relu', learning_rate=0.001,
                        momentum_val=0.00):
    model = Sequential()
    model.add(Dense(Num_Nodes_hidden, input_dim =input_features, activation=activation_function))
    model.add(Dense(output_dims,activation='softmax'))

    model.compile(loss = "categorical_crossentropy",
                  optimizer=SGD(lr = learning_rate, momentum = momentum_val),
                  metrics=['accuracy'])
    return model

Ниже приведен мой призыв к другой части, где я использую lambdacallbacks для сохранения весов. Я хочу что-то подобное, но на этот раз, чтобы сохранить фактические значения активации для скрытого слоя.

from keras.callbacks import LambdaCallback
import pickle
from keras.callbacks import ModelCheckpoint
from keras.callbacks import CSVLogger



# setting_parameters and calling inputs.
val = myNetwork()
vals = val.multilayerPerceptron(8,4,3,'relu',0.01)
batch_size_val = 20
number_iters = 200
weights_ih = []
weights_ho = []
activation_vals = []


get_activtaion = LambdaCallback(on_epoch_end=lambda batch, logs: activation_vals.append("What should I put Here"))




print_weights = LambdaCallback(on_epoch_end=lambda batch, logs: weights_ih.append(vals.layers[0].get_weights()))
print_weights_1 = LambdaCallback(on_epoch_end=lambda batch, logs: weights_ho.append(vals.layers[1].get_weights()))



history_callback = vals.fit(X_train, Y_train,
                                 batch_size=batch_size_val,
                                 epochs=number_iters,
                                 verbose=0,
                                 validation_data=(X_test, Y_test),
                                 callbacks = [csv_logger,print_weights,print_weights_1,get_activtaion])

Я очень запутался, и я не уверен, что я должен поместить в GetActivtion. Пожалуйста, дайте мне знать, что я должен там сделать, чтобы получить значение активации для всех образцов пакета для этого значения весов итерации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...