在我的 AI 聊天机器人中遇到 SGD/Keras 问题

Having issues with SGD/Keras in my AI chatbot

大家好。第一次在这里做post


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

追溯(最近一次通话):
文件 "C:\Users\Owner\PycharmProjects\ai\main.py",第 71 行,位于 model.compile(损失='categorical_crossentropy', 优化器=sgd, 指标=['accuracy'])

文件 "C:\Users\Owner\AppData\Roaming\Python\Python39\site-packages\keras\utils\traceback_utils.py",第 67 行,在 error_handler 从 None 提高 e.with_traceback(filtered_tb)

文件 "C:\Users\Owner\AppData\Roaming\Python\Python39\site-packages\keras\engine\training.py",第 2983 行,在 _validate_compile 引发类型错误('Invalid keyword argument(s) in `compile()`: '

TypeError:`compile()` 中的关键字参数无效:({'optimiser'},)。有效的关键字参数包括 "cloning"、"experimental_run_tf_function"、"distribute"、"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

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

这也是我第一次post。

问题是:

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. And here you could find 30 examples that might be helpful: https://www.programcreek.com/python/example/97109/keras.losses.categorical_crossentropy.

祝你项目顺利!

在 Tensorflow 2.0 中,参数的顺序无关紧要。而且,它也不必用单引号引起来。上面唯一的问题似乎是 's' 而不是 'optimizer'.

中的 'z'