【发布时间】:2021-05-07 20:08:37
【问题描述】:
我使用了 Keras 模型类,并且有一堆连续的层,我想知道如何访问堆栈中的层来设置它们的权重。
class sho_Model(tf.keras.Model):
def __init__(self):
super(sho_Model, self).__init__()
self.hidden_x1 = keras.models.Sequential(layers=[
Conv1D(filters=8, kernel_size=7, activation=selu, input_shape=(1, 80, 2)),
Conv1D(filters=6, kernel_size=7, activation=selu),
Conv1D(filters=4, kernel_size=5, activation=selu)
])
self.hidden_xfc = keras.models.Sequential(layers=[
Dense(20, activation=selu),
Dense(20, activation=selu)
])
self.hidden_x2 = keras.models.Sequential(layers=[
MaxPool1D(pool_size=2),
Conv1D(filters=4, kernel_size=5, activation=selu),
Conv1D(filters=4, kernel_size=5, activation=selu),
Conv1D(filters=4, kernel_size=5, activation=selu),
Conv1D(filters=4, kernel_size=5, activation=selu),
Conv1D(filters=4, kernel_size=5, activation=selu),
Conv1D(filters=4, kernel_size=5, activation=selu),
AveragePooling1D(pool_size=2),
Conv1D(filters=2, kernel_size=3, activation=selu),
AveragePooling1D(pool_size=2),
Conv1D(filters=2, kernel_size=3, activation=selu),
AveragePooling1D(pool_size=2)
])
self.hidden_encoded = Flatten()
self.hidden_embedding = keras.models.Sequential(layers=[
Dense(16, activation=selu),
Dense(8, activation=selu),
Dense(4)
])
def call(self, inputs, n=-1):
x = K.permute_dimensions(inputs, (2, 1))
x = self.hidden_x1(x)
xfc = K.reshape(x, (n, 256))
xfc = self.hidden_xfc(xfc)
x = K.reshape(x, (n, 2, 128))
x = self.hidden_x2(x)
encoded = self.hidden_encoded(x)
encoded = K.concatenate((encoded, xfc), 1)
embedding = self.hidden_embedding(encoded)
return embedding
我有类似的东西
curr_layer = 0
for layer in keras_model.layers:
layer.set_weights(...)
curr_layer+=1
但这只是访问顺序容器(正确的术语?)而不是单个层。
【问题讨论】:
-
您可以使用 layer.layers 从顺序模型中访问单个层
-
成功了,谢谢!
标签: tensorflow machine-learning keras keras-layer