Как проверить соотношение весов обновлений после каждой эпохи в модели Keras, встроенной в функцию - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу посмотреть веса моделей в моем keras и взять соотношение обновлений между ними, я получил некоторую справку отсюда. Это ссылка, которую я пробовал , но с ошибкой, что print_weights не определены, потому что я строю свою модель с помощью функции для повторного использования, и я на самом деле хочу знать коэффициент обновления весов, чтобыЯ решу, что я выбираю лучшие параметры или нет.Пожалуйста, смотрите мой код

def model(input1)    :
    model = Sequential () # we make a sequentail model

    model.add(Dense(256, input_dim=input1,activation  ='relu',activity_regularizer = regularizers.l2(1e-4)))
    model.add(Dropout(0.5))
    model.add(Dense(128, input_dim=input1,activation  ='relu',activity_regularizer = regularizers.l2(1e-4)))
    model.add(Dropout(0.5))
    model.add(Dense(64, input_dim=input1,activation  ='relu',activity_regularizer = regularizers.l2(1e-6)))
    model.add(Dropout(0.25))
    model.add(Dense(32, activation  ='relu',activity_regularizer = regularizers.l2(1e-8)))
    model.add(Dropout(0.25))
    model.add(Dense(16, activation  ='relu',activity_regularizer = regularizers.l2(1e-8)))
    model.add(Dropout(0.25))
    model.add(Dense(8, activation  ='relu'))

    model.add(Dense(2, activation  ='softmax')) #softmax layer to compute the probability of
                                                #labels
    print_weights = LambdaCallback(on_epoch_end=lambda batch, logs: print(model.layers[8].get_weights()))

    model.summary()
    model.compile(loss=keras.losses.squared_hinge, optimizer=keras.optimizers.Adam(lr=0.00007, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False), metrics=['accuracy'])
    return model

import matplotlib.pyplot as plt
model=model(19)
history =model.fit(X_train, y_train, epochs=2000, batch_size=300,validation_data=(X_test,y_test),
                  callbacks = [print_weights])

# Plot training & validation accuracy values
plt.plot(history.history['acc'])
plt.plot(history.history['val_acc'])

plt.title('Model accuracy')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(['Train', 'Test'], loc='upper left')
plt.show()

# Plot training & validation loss values
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('Model loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['Train', 'Test'], loc='upper left')
plt.show()

Ошибка:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-66-a7f6ec00aa0b> in <module>()
      2 model=model(19)
      3 history =model.fit(X_train, y_train, epochs=2000, batch_size=300,validation_data=(X_test,y_test),
----> 4                   callbacks = [print_weights])
      5 
      6 # Plot training & validation accuracy values

NameError: name 'print_weights' is not defined

Подскажите, пожалуйста, как рассчитать коэффициент обновления между предыдущими и текущими весами.с каким соотношением мои веса увеличиваются.спасибо.

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