TensorFlow 中无法识别的优化器和损失函数

问题描述 投票:0回答:1

我在 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>
tensorflow keras optimization compiler-errors loss-function
1个回答
0
投票

我无法重现你的问题。当我跑步时

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
© www.soinside.com 2019 - 2024. All rights reserved.