我在 google colab 中尝试使用自定义优化器和损失函数在 TensorFlow 2.15.0 中编译 Keras 模型时遇到问题。
这是运行良好的代码片段
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
但是,当我尝试单独配置优化器和损失时,如下所示:
# Configure the optimizer, loss, and model
optimizer = tf.keras.optimizers.Adam(learning_rate=0.01)
loss = tf.keras.losses.CategoricalCrossentropy(from_logits=False)
print(optimizer)
print(loss)
model.compile(optimizer=optimizer, loss=loss, metrics=['accuracy'])
我遇到以下错误:
ValueError: Could not interpret optimizer identifier: <keras.src.optimizers.adam.Adam object at 0x7f925c90ace0>
TensorFlow 似乎在解释自定义优化器对象时遇到问题。详情如下:
TensorFlow version: 2.15.0
Custom optimizer: <keras.src.optimizers.adam.Adam object at 0x7f925c90ace0>
Custom loss function: <keras.src.losses.CategoricalCrossentropy object at 0x7f9301977c10>
我无法重现你的问题。当我跑步时
import tensorflow as tf
model = tf.keras.applications.ResNet50(weights=None)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
optimizer = tf.keras.optimizers.Adam(learning_rate=0.01)
loss = tf.keras.losses.CategoricalCrossentropy(from_logits=False)
print(optimizer)
print(loss)
model.compile(optimizer=optimizer, loss=loss, metrics=['accuracy'])
print(model.optimizer, model.loss)
print(tf.__version__)
效果很好:
<keras.src.optimizers.adam.Adam object at 0x7f0944159990>
<keras.src.losses.CategoricalCrossentropy object at 0x7f08d03b5350>
<keras.src.optimizers.adam.Adam object at 0x7f0944159990> <keras.src.losses.CategoricalCrossentropy object at 0x7f08d03b5350>
2.15.0