我正在尝试从另一个训练好的keras
模型创建一个新的keras
模型
参考的模型训练示例代码来自这里:
#TF version 2.2.0from tensorflow.python.keras import models, layersfrom tensorflow.python.keras.models import Sequentialfrom tensorflow.python import kerasimport tensorflow as tf from tensorflow.python.keras.layers import Densefrom tensorflow.keras.datasets import boston_housing(x_train,y_train), (x_test,y_test) = boston_housing.load_data()model = Sequential()model.add(Dense(2, activation='relu', input_shape=(13,)))model.add(Dense(1, activation='softmax'))model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])model.fit(x_train, y_train,batch_size= 64,epochs= 1,validation_split=0.2)
将模型保存为json
格式
json_obj = model.to_json()new_model = keras.models.model_from_json(json_obj)
但是在创建new_model
后,weights
是不同的:
model.get_weights() != new_model.get_weights()
如果我使用from_config()
来创建new_model
,情况也是如此。我的问题是,当我从model
创建new_model
时,两个模型的权重不应该是相同的吗?还是我的理解有误?任何建议都将有所帮助
回答:
to_json
方法不会保存模型的权重,只会保存模型的架构。
请参考这里:to_json方法
我建议你使用save_model方法。
如果你想直接将模型复制到另一个模型中,可以执行以下操作:
new_model = tf.keras.models.clone_model(model)new_model.set_weights(model.get_weights())