TensorFlow训练对话机器人报categorical crossentropy损失函数未知错误求助
问题排查与修复方案
核心报错原因
你看到的Unknown loss function: categorical crossentropy报错本质是损失函数名称拼写错误,并非需要自定义损失函数:
你在model.compile行写的损失函数名是带空格的'categorical crossentropy',Keras内置的对应损失函数名中间是下划线,正确写法为'categorical_crossentropy'。
其他可修复的警告/逻辑问题
- numpy数组创建警告:代码中
training = np.array(training)会触发嵌套序列的弃用警告,按照提示修改为training = np.array(training, dtype=object)即可消除 - SGD优化器学习率设置错误:你当前把SGD的学习率
lr设为0,模型无法进行梯度更新学习,建议修改为合理值如lr=0.01 - CUDA相关警告无需处理:是因为你本地没有配置对应版本的NVIDIA GPU驱动和CUDA环境,TensorFlow会自动切换到CPU运行,不影响训练逻辑
修改后的对应代码片段
# 修复numpy警告 training = np.array(training, dtype=object) # 修复SGD学习率设置 sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) # 修复损失函数名称错误 model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
修改完成后重新运行代码即可正常训练。
内容的提问来源于stack exchange,提问作者Anish Banerjee
相关产品推荐
相关产品推荐

