gpt4 book ai didi

keras - keras 中用于文本分类的 convolution2d 的尺寸误差

转载 作者:行者123 更新时间:2023-12-05 03:05:26 33 4
gpt4 key购买 nike

我的输入形状是一个 10000x500 的文本文档。 10000代表文档数,500代表单词数。

我想做的是为 kera 的嵌入提供文本,然后是 BLSTM,然后是 Conv2D,然后是 2Dpooling,展平,最后是一个完全连接的密集层。

架构如下图所示:

inp = Input(shape=(500,))
x = Embedding(max_features=10000, embed_size=100)(inp)
x = Bidirectional(CuDNNLSTM(50, return_sequences=True))(x)
x = Conv2D(filters=128, kernel_size=(3, 3), input_shape=(100,500,1))(x)
x = MaxPooling2D()(x)
x = Flatten()(x)
x = Dense(1, activation="sigmoid")(x)

嵌入的输出形状为 (None, 500, 100)BLSTM 隐藏状态的输出形状为 (None, 500, 100)。我想要一个 Conv2D 从 BLSTM 中提取隐藏层上的局部特征。但是,我遇到了尺寸差异错误。

ValueError: Input 0 is incompatible with layer conv2d_8: expected ndim=4, found ndim=3

我在这里尝试了一个解决方案When bulding a CNN, I am getting complaints from Keras that do not make sense to me.但仍然出现错误。

最佳答案

你有两个选择:

a) 将 Conv2Drows=100cols=500channels=1 结合使用,方法是添加一个x 的维度:

x = Lambda(lambda t: t[..., None])(x)
x = Conv2D(filters=128, kernel_size=(3, 3), input_shape=(100,500,1))(x)

b) 使用 Conv1Dsteps=100input_dim=500,并使用 MaxPooling1D:

x = Conv1D(filters=128, kernel_size=3, input_shape=(100, 500))(x)
x = MaxPooling1D()(x)
x = Flatten()(x)

关于keras - keras 中用于文本分类的 convolution2d 的尺寸误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50996659/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com