0

大家好。第一次在这里发帖。


所以我正在尝试在 Pycharm IDLE 中使用 Python 制作一个 AI 聊天机器人。在尝试开始训练能够使聊天机器人工作的神经网络时,我遇到了这个错误并且无法找到任何可以用来帮助我解决这个问题的资源:

回溯(最后一次调用):
文件“C:\Users\Owner\PycharmProjects\ai\main.py”,第 71 行,在 model.compile(loss='categorical_crossentropy', optimiser=sgd, metrics=['accuracy' ])

文件“C:\Users\Owner\AppData\Roaming\Python\Python39\site-packages\keras\utils\traceback_utils.py”,第 67 行,error_handler 从无

文件“C: \Users\Owner\AppData\Roaming\Python\Python39\site-packages\keras\engine\training.py",第 2983 行,在 _validate_compile 中引发 TypeError('compile()` 中的无效关键字参数:'

TypeError : `compile()` 中的关键字参数无效:({'optimiser'},)。有效的关键字参数包括“克隆”、“experimental_run_tf_function”、“ 分发”、“target_tensors”或“sample_weight_mode”。

原始代码

即发生错误的代码

sgd = gradient_descent_v2.SGD(learning_rate=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimiser=sgd, metrics=['accuracy'])

我还必须像这样导入 SGD,否则找不到它:

from keras.optimizers import gradient_descent_v2

如果有人知道如何解决这个问题,请告诉我!

4

1 回答 1

0

这也是我第一次发帖。

问题是:

model.compile(loss='categorical_crossentropy', optimiser=sgd, metrics=['accuracy'])

参数的顺序应该改变。并且sgd应该包含在单引号中。此外,optimiser应该optimizerz

所以它应该是这样的:

model.compile(optimizer='sgd', loss='categorical_crossentropy', metrics=['accuracy'])

另外,关于导入,试试这个:

from tensorflow.keras.optimizers import SGD 并确保您之前导入了 categorical_crossentropy。来自 keras 网站的有用文档: https ://www.tensorflow.org/api_docs/python/tf/keras/Model 。在这里您可以找到 30 个可能有用的示例:https ://www.programcreek.com/python/example/97109/keras.losses.categorical_crossentropy 。

祝你的项目好运!

于 2022-02-16T11:55:04.817 回答