Python、Keras - 张量 u'dense_2_target : Cannot feed value of shape (10, 的 ValueError : 0', which has shape ' (? 70, 1025)'

标签 python tensorflow keras recurrent-neural-network

我正在尝试批量训练 RNN。 输入输入大小 (10, 70, 3075), 其中10是批量大小,70是时间维度,3075是频率维度。

有 3 个输出,其大小为 (10、70、1025) 每个基本上都有 10 个大小为 (70,1025) 的频谱图。

我想通过回归来训练这个RNN,其结构是

input_img = Input(shape=(70,3075 ) )
x = Bidirectional(LSTM(n_hid,return_sequences=True, dropout=0.5,    recurrent_dropout=0.2))(input_img)
x = Dropout(0.2)(x)
x = Bidirectional(LSTM(n_hid,  dropout=0.5, recurrent_dropout=0.2))(x)
x = Dropout(0.2)(x)
o0 = ( Dense(1025, activation='sigmoid'))(x)
o1 = ( Dense(1025, activation='sigmoid'))(x)
o2 = ( Dense(1025, activation='sigmoid'))(x)

问题是输出密集层无法考虑三个维度,它们想要类似 (None, 1025) 的东西,我不知道如何提供它,除非我沿着时间维度连接。

出现以下错误:

ValueError: Cannot feed value of shape (10, 70, 1025) for Tensor u'dense_2_target:0', which has shape '(?, ?)'

batch_shape 选项在输入层中有用吗?我实际上已经尝试过,但也遇到了同样的错误。

最佳答案

在本例中,第二个 RNN 将序列折叠为单个向量,因为默认情况下 return_sequences=False。要使模型返回序列并在每个时间步上单独运行 Dense 层,只需将 return_sequences=True 添加到第二个 RNN:

x = Bidirectional(LSTM(n_hid,  return_sequences=True, dropout=0.5, recurrent_dropout=0.2))(x)

密集层会自动应用于最后一个维度,因此之后无需重新整形。

关于Python、Keras - 张量 u'dense_2_target : Cannot feed value of shape (10, 的 ValueError : 0', which has shape ' (? 70, 1025)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54260919/

相关文章:

python - 如何获取python调用者对象信息?

Python,PyGame 图像不显示

python - 使用 direnv 激活 virtualenv 不会激活 virtualenv

python-3.x - tensorflow 早期停止无法正常工作

python - 使用 TensorFlow 和 Keras 进行图像分类

python - 在图像上训练 Keras 模型时,出现错误 "Invalid argument: Attr shrink_axis_mask has value 4294967295 out of range for an int32"

python - Opencv python包管理

python-2.7 - 麻烦让 tensorflow 工作,libcudart.so.8.0 不在路径中

python - tensorflow:找不到 dnn 实现

python - 人工神经网络 - 编译错误