R语言Keras构建DNN时predict报错:无适用方法于keras_training_history
问题解决方案
错误原因
你调用predict的对象错误:FIT_DNN1是fit()方法返回的训练历史对象(类为keras_training_history),这个对象仅存储训练过程中的损失、指标变化等信息,并没有predict方法。predict方法需要调用在训练好的模型对象上,也就是你定义的DNN_1。
核心修正
将预测部分的代码从:
pred <- FIT_DNN1 %>% predict(x_test_1)
改为:
pred <- DNN_1 %>% predict(x_test_1)
额外参数修正(避免训练行为异常)
你的训练代码里有两个参数拼写错误,虽然不触发当前报错,但可能导致训练不符合预期:
fit()中的epoch应改为epochs(复数形式)batchsize应改为batch_size(下划线分隔)
修正后的拟合代码:
FIT_DNN1 <- DNN_1 %>% fit( x_train_1, y_train_1, epochs = 50, batch_size = 4, validation_data = list(x_test_1, y_test_1), verbose = 2 )
原理说明
Keras的fit()方法是原地训练模型:它会直接修改你定义的DNN_1对象,将训练得到的权重存入其中,同时返回一个记录训练过程的历史对象。因此训练完成后,直接使用原模型对象DNN_1进行预测即可。
内容的提问来源于stack exchange,提问作者erram_20589
相关产品推荐
相关产品推荐

