python - tf.keras.models.save_model 和优化器警告

标签 python tensorflow optimization machine-learning keras

我使用 tf.keras 创建了一个Sequential 模型,如下所示:

model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(8, input_dim=4))
model.add(tf.keras.layers.Dense(3, activation=tf.nn.softmax))

opt = tf.train.AdamOptimizer(learning_rate=0.001)
model.compile(optimizer=opt, loss="categorical_crossentropy", metrics=["accuracy"])

model.summary()

之后,我使用 train_on_batch 创建了一个训练过程:

EPOCHS=50
for epoch in range(EPOCHS):
  for metrics, labels in dataset:
    # Calculate training loss and accuracy
    tr_loss, tr_accuracy = model.train_on_batch(metrics, labels)

当我尝试保存模型时,我收到一条警告。我不明白为什么,因为我将优化器作为 model.compile 的一部分包含在内:

tf.keras.models.save_model(
    model,
    "./model/iris_model.h5",
    overwrite=True,
    include_optimizer=True
)

WARNING:tensorflow:TensorFlow optimizers do not make it possible to access optimizer attributes or optimizer state after instantiation. As a result, we cannot save the optimizer as part of the model save file.You will have to compile your model again after loading it. Prefer using a Keras optimizer instead (see keras.io/optimizers).

我使用的TF版本是1.9.0-rc2。

最佳答案

正如警告所说,保存模型时无法保存 Tensorflow 优化器。相反,使用 optimizers provided by Keras :

opt = tf.keras.optimizers.Adam(lr=0.001)

关于python - tf.keras.models.save_model 和优化器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51252555/

相关文章:

Python,多处理 : what to do if process. join() 永远等待?

python - 如何缓存和迭代未知大小的数据集?

mysql - 使用 mysql COUNT(*)

python - Pandas:当列包含 numpy 数组时聚合

python - 从 Flask-SQLAlchemy 分页结果访问列

python - 如何在 python 中使用命令打开 shell?

python - evaluate_generator 的准确率为 0%,但在使用相同数据进行训练时准确率为 75%——这是怎么回事?

python - BasicRNNCell 中的内部变量

java - 在迭代循环中使用字节是否更有效?

python - 通过在 MATLAB/Python 中优化多个变量来减少两个图之间的差异?