我在 Keras 中训练了一个第一层具有固定权重(不可训练)的神经网络。
这些层执行的计算在训练期间非常密集。为每个输入缓存层激活并在下一个纪元传递相同输入数据时重用它们以节省计算时间是有意义的。
是否可以在 Keras 中实现这种行为?
您可以将您的模型分成两个不同的模型。例如,在以下代码段中,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)
我是一名优秀的程序员,十分优秀!