【问题标题】:Reshaping Embedding layer output for Conv2D?重塑Conv2D的嵌入层输出?
【发布时间】:2020-08-03 07:59:17
【问题描述】:

嵌入层的输出形状为

embedding_4 (Embedding)         (None, 10, 50)

其中 10 是单词的数量,50 是向量的维度。如何重塑张量以将其输入到一个

Conv2D(50,(2,50),padding='same',activation='relu')

层。使用 Keras 编写代码。

【问题讨论】:

  • 3d 序列需要使用 Conv1D
  • 我不能使用 Conv2D 吗?
  • 不,为什么是Conv2D?

标签: python tensorflow deep-learning conv-neural-network


【解决方案1】:

因此,正如评论所暗示的,如果您使用Conv1D 会更好,因为Conv1D 所需的输入等级为3。此外,对于Conv2d,您需要输入等级为4

您可以执行以下操作来真正重塑您的输入。

example = np.zeros((32,10,50))

reshape = np.expand_dims(example , axis=1)

输出将是:

(32, 1, 10, 50)

您还可以使用 Keras 的重塑层 API,如下所示。

import tensorflow as tf

model = tf.keras.Sequential()
model.add(tf.keras.layers.Reshape((1, 10, 50), input_shape=(10, 50)))

model.output_shape

输出形状如下:

(None, 1, 10, 50)

正如注释None 将成为您的batch_size1 成为您的频道。

但也像评论建议的那样,你应该问问自己Conv2D 会带来什么好处,Conv1D 不会。

【讨论】:

    猜你喜欢
    • 2019-09-07
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多