seq2seq构建聊天机器人训练时报ListWrapper无minimize属性错误如何解决
问题解决方法
错误根因
报错是model.compile()方法的optimizer参数配置错误导致的:你给optimizer参数传入了列表['adam'],但单输出模型的optimizer参数只能接收单个优化器名称字符串或优化器实例,不能用列表包裹。列表类型的optimizer参数仅用于多输出模型配置多套优化器的场景,你这里传列表会导致框架将优化器封装为ListWrapper对象,该对象不存在训练需要调用的minimize方法,最终触发属性缺失报错。
修复方案
将model.compile行的optimizer=['adam']修改为optimizer='adam'即可解决当前报错,修改后的代码片段如下:
model.compile(loss = 'categorical_crossentropy',metrics=['acc'],optimizer='adam')
如果需要自定义优化器的学习率、梯度裁剪等参数,也可以传入优化器实例,示例如下:
from tensorflow.keras.optimizers import Adam # 按需调整学习率等参数 custom_adam = Adam(learning_rate=0.002, clipnorm=1.0) model.compile(loss = 'categorical_crossentropy',metrics=['acc'],optimizer=custom_adam)
额外注意事项
你代码中定义的编码器输入变量名为enc_input、解码器输入变量名为dec_input,但调用model.fit()时传入的是encoder_input和decoder_input,要注意变量名保持一致,否则后续还会触发变量未定义的报错。
内容的提问来源于stack exchange,提问作者htht
相关产品推荐
相关产品推荐

