smw*_*smw 3 machine-learning deep-learning keras
我有一个简单的训练keras模型:
model = Sequential()
model.add(Dense(output_dim, activation='relu',input_shape(input_dim,)))
model.add(Dense(output_dim, activation='sigmoid'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x_train, y_train)
Run Code Online (Sandbox Code Playgroud)
在训练模型后,我想添加一个图层来选择权重.我试过了
model.layers.append(Dense(output_dim, activation='sigmoid', input_shape=(input_dim,), kernel_initializer='ones'))
但它不起作用......我觉得我可能需要再次编译模型,但它不起作用.有任何想法吗?
小智 11
如果我理解你的问题,那么你只需要为所有模型的图层保存权重.你可以用不同的方式做到这一点.最简单的是:
# training ...
temp_weights = [layer.get_weights() for layer in model.layers]
Run Code Online (Sandbox Code Playgroud)
在训练模型之后 - 有必要再次使用一层构建模型:
model = Sequential()
model.add(Dense(output_dim, activation='relu',input_shape(input_dim,)))
model.add(Dense(output_dim, activation='sigmoid'))
model.add(Dense(output_dim, activation='sigmoid', kernel_initializer='ones')) # new layer
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)
并将以前保存的权重加载到相应的图层中:
for i in range(len(temp_weights)):
model.layers[i].set_weights(temp_weights[i])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3499 次 |
最近记录: |