我在将我的训练模型加载到另一个 python 文件时遇到问题。 这是我用来保存它的代码:
input_size = 16
output_size = 2
hidden_layer_size = 50
model = tf.keras.Sequential([
tf.keras.layers.Dense(hidden_layer_size,
activation='relu'), # 1st hidden layer
tf.keras.layers.Dense(hidden_layer_size,
activation='relu'), # 2nd hidden layer
tf.keras.layers.Dense(output_size,
activation='softmax') # output layer
])
model.compile(optimizer='Adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
batch_size = 100
max_epochs = 20
early_stopping=tf.keras.callbacks.EarlyStopping()
model.fit(train_inputs, # train inputs
train_targets, # train targets
batch_size=batch_size, # batch size
epochs=max_epochs, # epochs that we will train for (assuming early stopping doesn't kick in)
callbacks=[early_stopping],
validation_data=(validation_inputs, validation_targets), # validation data
verbose = 1 # making sure we get enough information about the training process
)
saver = tf.train.Saver()
sess = tf.compat.v1.keras.backend.get_session()
saver.save(sess,r'C:\Users\User\Desktop\tensorflow\model\tf_keras_session\session.ckpt' )
model.save(r'C:\Users\User\Desktop\tensorflow\model\tensorflow_model_3')
这是我用来加载它的代码:
model = tf.keras.models.load_model('./data/tensorflow_model_3')
saver = tf.compat.v1.train.Saver()
sess = K.get_session()
saver.restore(sess, './data/tf_keras_session/session.ckpt')
最后,我得到了一个这样的错误(问题在于定义“saver”):
RuntimeError: When eager execution is enabled, `var_list` must specify a list or dict of variables to save
答案 0 :(得分:1)
禁用急切执行模式。将其设置为 tf
导入的开始。
tf.compat.v1.disable_eager_execution()