Как получить вес слоя в модели керас для каждого входа - PullRequest
0 голосов
/ 25 апреля 2020

Я знаю, что вы можете использовать Model.layer [layer_number] .getWeights (), чтобы получить вес слоя из модели keras в определенной точке. Я должен только получить эти веса для эпохи или партии, используя обратные вызовы во время обучения.

Но я хочу получить вес слоя для каждого входа в обучающей части. Или, если возможно, активация слоя для каждого входа вместо эпохи.

Есть ли способ добиться этого?

1 Ответ

2 голосов
/ 26 апреля 2020

Это небольшой пример. Вы можете использовать custom callbacks, внутри которого вы можете получить доступ к весам модели по слоям (включая активации (layers.Activation)). Просто измените в зависимости от ваших потребностей.

Это напечатает веса после каждой эпохи, вы можете построить их / сохранить их или выполнить любые операции с ними, если хотите.

from tensorflow.keras.layers import *
from tensorflow.keras.models import Model, Sequential
from tensorflow.keras.optimizers import Adam
import tensorflow as tf
import numpy as np
from keras.callbacks import LambdaCallback

model=Sequential()
model.add(Dense(32,activation='linear',input_shape=(37,10)))
model.add(Dense(32,activation='linear'))
model.add(Dense(10,activation='linear'))
model.compile(loss='mse',optimizer=Adam(lr=.001),metrics=['accuracy'])
model.summary()

class MyCustomCallback(tf.keras.callbacks.Callback):

  def on_train_batch_begin(self, batch, logs=None):
    print(model.layers[0].get_weights())

  def on_train_batch_end(self, batch, logs=None):
    print(model.layers[0].get_weights())

  def on_test_batch_begin(self, batch, logs=None):
    pass

  def on_test_batch_end(self, batch, logs=None):
    pass


X_train = np.zeros((10,37,10))
y_train = np.zeros((10,37,10))

weight_print = MyCustomCallback()
model.fit(X_train, 
          y_train, 
          batch_size=32, 
          epochs=5, 
          callbacks = [weight_print])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...