4Manuals

  • PDF Cloud HOME

如何在Tensorflow RNN中正确处理一键编码和多维数据 Download

    如何将文本边界框与pyplot.Rectangle对齐? 导入类问题 在Python数据框中选择列时出错 使用Rabbit的pika确认消息 如何在按住键的同时暂停VideoStream? Python OpenCV TypeError:无法处理此数据类型 使用buildozer不会下载sdl2_image SMTPSenderRefused,421,超出超时 Tensorflow多线程推理比单线程推理慢 关于python中变量的困惑。 python如何使用变量?

我正在创建一个对字母序列进行分类的二进制分类器,例如'BA'。

每个序列由2个字母组成,这些字母被编码为“一键热”向量。例如,序列“ BA”为[[0, 1, 0, 0], [1, 0, 0, 0]]。

(这些序列在我的原始代码中更长,但我想让问题保持简单)

我是机器学习的新手,之前我做了一些工作,但仅使用简单输入。我正在努力了解如何将多维输入传递到我的网络中。我需要以某种方式展平吗?

我在这里创建了一个最小可重复的示例- https://www.dropbox.com/s/dhg3huw6bh7dfjd/Example.py?dl=0,Sequences仅包含3个训练数据示例,以使其简单。我只需要帮助确定如何将3d输入传递到模型中即可。

在我提供的代码中,整个数据集如下:

Sequences = [  [[0, 1, 0, 0], [1, 0, 0, 0]]   ,  [[0, 1, 0, 0], [1, 0, 0, 0]]  ,   [[0, 0, 0, 1], [0, 1, 0, 0]]  ]

这是一个二进制分类器,这些序列的目标是:

Targets = [1.0, 1.0, 0.0]

如果运行我提供的代码,则会出现此错误:

ValueError: Input 0 of layer lstm is incompatible with the layer: expected ndim=3, found ndim=4. Full shape received: [None, 2, 2, 4]

如果有人可以帮助您弄清楚如何正确地将序列传递到我的网络中,那就太好了。谢谢:)

1 个答案:

答案 0 :(得分:1)

这是罪魁祸首。 LSTM要求3维输入。在您的情况下,您尝试传递4维输入(请记住Keras为输入形状添加了额外的批处理尺寸)。因此,摆脱第一个2可以解决您的问题。

model.add(LSTM(128,
                   input_shape=(2, 2, 4), return_sequences=True))

只需将其更改为

model.add(LSTM(128,
                   input_shape=(2, 4), return_sequences=True))



Similar searches
    阵列超出范围MQL5循环 示例:使用Volley以编程方式发送sendgrid电子邮件 带有操作栏图标单击的NavigationUI导致片段淡入和淡出 如何将dask数据帧转换为scipy csr矩阵? 用JavaScript从RGB像素阵列向屏幕绘制图像的最快方法是什么?