检查目标时出错:预期密集有二维,但得到数组,但仅在最终模型拟合期间,而不是调整

问题描述

我正在尝试在 R 中构建一个包含 2 个模型的集成神经网络,一个 LSTM 和一个 GRU 模型。我正在预测一系列数值。当我调整并最终训练一个简单的 LSTM、GRU 或堆叠它们时,一切正常。

现在我正在尝试在 R 中的 keras 中测试集成神经网络,但遇到了一个奇怪的问题。当我使用 tfruns 包来调整模型时,它可以正常工作并返回一个文件夹,我可以将其作为包含参数值及其验证损失指标的所有组合的数据框读取。

当我尝试使用最佳参数值再次拟合网络时会出现问题。它返回错误

Error in py_call_impl(callable,dots$args,dots$keywords) : 
  ValueError: Error when checking target: expected dense_5 to have 2 dimensions,but got array with    shape (446,10,1)

我的输入是形状为 (2500,1) 的 x_train 和 y_train 数组。我的模型看起来像这样:

input <- layer_input(shape = c(ncol(x_train),1))
l1 <- input %>% layer_lstm(units=tune$flag_un,return_sequences = F,dropout = tune$flag_dr,kernel_regularizer = regularizer_l2(tune$flag_rl))
l2 <- input %>% layer_gru(units=tune$flag_un,dropout = tuneflag_dr,kernel_regularizer = regularizer_l2(tune$flag_rl))
avgm <- layer_average(c(l1,l2))
output <- avgm %>% layer_dense(units = length_sequence)
ensem.mod <- keras_model(inputs = input,outputs = output)

ensem.mod %>% compile(loss="mse",optimizer=optimizer_adam(lr = tune$learning_rate))
history <- ensem.mod %>% fit(x_train,y_train,validation_split = 0.2,epochs=200,callbacks = list(callback_early_stopping(
                             monitor = "loss",min_delta = 0.0000001,patience = 10,restore_best_weights = TRUE
                           )))

这真的很烦人,我不明白它如何通过调整运行但不适合最终模型。对于熟悉 tfruns 包的人来说,你知道我必须为调优运行创建一个单独的模型文件。这是主文件中指定的模型,它与我在参数调整期间从我的 ensemblemod.R 文件获取的模型相同,只是我使用 FLAG$etc 作为调整参数。

感谢任何帮助:)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...