Распечатать Keras Kernel - PullRequest
       6

Распечатать Keras Kernel

0 голосов
/ 17 января 2019

Я написал собственный слой keras и, в качестве примера, настроил ядро, которое выглядит следующим образом:

[[w1, 0,  0],
 [w2, w3, 0],
 [0,  w4, w5]]

где w1, ... w5 - обучаемые веса, а нулевые записи не могут быть обучены.

Теперь я хочу подтвердить, все ли работает правильно (т.е. есть ли у ядра все еще нулевые записи, где оно должно быть после обучения). Я не мог узнать, как распечатать ядро ​​после тренировки. Метод .get_weights () просто возвращает мне вес, но я хочу явно распечатать ядро.

Заранее спасибо

1 Ответ

0 голосов
/ 17 января 2019

Итак, мне повезло, и я нашел ответ в посте, не относящемся к теме. Ответ довольно общий:

Для тензора, определенного как член класса пользовательского слоя, необходимо вызвать его метод оценки с правильным сеансом. Это

import keras.backend as K

# Train your model...

sess = K.get_session()
print(model.get_layer("name_of_your_layer").your_tensor.eval(session=sess))

Например, для печати ядра плотного слоя после тренировки это

import numpy as np
from keras.layers import Input, Dense
from keras.models import Model
import keras.backend as K

x = np.random.rand(10,3)

layer_1 = Input(shape=(x.shape[1],))
layer_2 = Dense(units=x.shape[1])(layer_1)

model = Model(inputs=layer_1, outputs=layer_2)
model.compile(optimizer="Adam", loss="MSE")
model.fit(x, x, epochs=5)

sess = K.get_session()
print(model.get_layer("dense_1").kernel.eval(session=sess))
...