Как кэшировать активации слоев в Keras? - PullRequest
0 голосов
/ 30 января 2019

Я тренирую NN, в котором первые слои имеют фиксированные веса (не обучаемые) в Керасе.

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

Возможно ли добиться такого поведения в Keras?

1 Ответ

0 голосов
/ 02 февраля 2019

Вы можете разделить вашу модель на две разные модели.Например, в следующем фрагменте x_ будет соответствовать вашим промежуточным активациям:

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


nb_samples = 100
in_dim = 2
h_dim = 3
out_dim = 1

a = Input(shape=(in_dim,))
b = Dense(h_dim, trainable=False)(a)
model1 = Model(a, b)
model1.compile('sgd', 'mse')

c = Input(shape=(h_dim,))
d = Dense(out_dim)(c)
model2 = Model(c, d)
model2.compile('sgd', 'mse')


x = np.random.rand(nb_samples, in_dim)
y = np.random.rand(nb_samples, out_dim)
x_ = model1.predict(x)  # Shape=(nb_samples, h_dim)

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