【问题标题】:sklearn MinMaxScaler inverse_transform "Found array with dim 3. Estimator expected <= 2" on Removing Keras LSTM blocksklearn MinMaxScaler inverse_transform“找到暗淡为 3 的数组。预计估计器 <= 2”关于移除 Keras LSTM 块
【发布时间】:2020-10-04 17:23:02
【问题描述】:

对于标题的含糊之处,我很抱歉,任何改进它的建议都会很高兴地接受。

我正在尝试理解我的讲师编写的 LSTM 网络。他给我们提出了几个问题来帮助我们理解,其中之一是移除其中一个 LSTM 块,看看它对训练结果有什么影响。

问题是,当我在编译模型后注释掉第二个块时,输出数据的 inverse_transform 比例已完成的行不再起作用,并给出错误“Found array with dim 3. Estimator预计

谁能帮我理解为什么? 代码在这个链接: https://colab.research.google.com/drive/1FWku0TIk_9CRukUj7-v29qUYO29jxVEh?usp=sharing

很抱歉 cmets 等不是英文的,但是模型构建是在描述模型的文本之后的块中完成的(“Architettura del modello di RNN:”),中断的行是模型执行后块中的最后一行。

我希望这很清楚,有关更多信息,请随时询问!

【问题讨论】:

    标签: python keras scikit-learn lstm


    【解决方案1】:

    这是因为您将 3d 序列传递给 minmaxscaler。它接受二维序列。您要做的是将您的预测转换为 2d,然后返回到 3d。这可以在一行中完成...

    predicted_values = scaler.inverse_transform(predicted_values.reshape(-1,1)).reshape(predicted_values.shape)
    

    【讨论】:

    • 非常感谢您的解决方案,您介意解释一下为什么这仅在有 1 个 LSTM 块时发生,而不是在有两个时发生吗?
    • PS:现在当我尝试绘制它时它给出了一个错误,这条线: plt.plot(predicted_values, color = 'blue', label = 'Predizione del titolo TATA') 给出了错误: ValueError: x 和 y 不能大于 2-D,但有形状 (16,) 和 (16, 30, 1) 知道如何解决这个问题吗?提前致谢!
    • lstm 块的数量无关紧要......当您将 3D 数据传递给缩放器时,它总是会发生。您无法绘制 3d 序列...以这种方式修改 plt.plot(predicted_values[:,-1,:],...)。不要忘记投票并接受它作为答案;-)
    • 但是这个问题只有在我删除一个 LSTM 和 dropout 块时才会出现,当我恢复它时,它又可以工作了
    • 如果你总是重塑,就像我说的那样,你永远不会遇到问题......不要忘记投票并接受它作为答案;-)
    猜你喜欢
    • 2020-07-10
    • 2018-12-15
    • 2018-01-16
    • 2017-03-26
    • 2016-11-28
    • 2019-06-01
    • 1970-01-01
    • 2018-06-08
    • 2020-10-08
    相关资源
    最近更新 更多