卷积神经网络形状
Posted
技术标签:
【中文标题】卷积神经网络形状【英文标题】:CONV1D NEURAL NETWORK SHAPE 【发布时间】:2020-10-07 16:32:24 【问题描述】:model = Sequential()
model.add(Conv1D(filters=4, kernel_size=(1), activation="relu", input_shape=(4,1)))
model.add(MaxPooling1D(pool_size=(1)))
model.add(Dropout(0.25))
model.add(Conv1D(filters=32, kernel_size=(1), activation='relu'))
model.add(MaxPooling1D(pool_size=(1)))
model.add(Dropout(0.25))
model.add(Conv1D(filters=64, kernel_size=(1), activation="relu"))
model.add(MaxPooling1D(pool_size=(1)))
model.add(Dropout(0.25))
model.add(Conv1D(filters=64, kernel_size=(1), activation='relu'))
model.add(MaxPooling1D(pool_size=(1)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(7, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
您好,我是构建神经网络的新手,我决定尝试解决一个多标签分类问题。我将四个特征值作为输入,并将结果分类作为 7 个类别中的一个或多个。因此,我决定实现如上所示的神经网络。 但是,在拟合模型时
model.fit(X_train, y_train, epochs = 10, validation_data = (X_test,y_test), batch_size = 64)
我收到此错误:
Error when checking input: expected conv1d_92_input to have 3 dimensions, but got array with shape (415, 4)
我很困惑为了让神经网络适应数据而观察做什么。特征和标签数据的形状分别为: X_train = (414,4) y_train = (413,7)
【问题讨论】:
抱歉,在编写这样的代码之前,您应该真正回顾一下神经网络的基础知识。为什么只使用四个输入的卷积?您知道过滤器大小为 1 的卷积意味着什么吗?使用大小为 1 的池有什么意义(它什么都不做)? ... 至于错误,好吧,您在模型中指定的输入形状与数据的形状明显不同。原则上很容易修复(只需在最后给数据添加一个轴),但我怀疑从长远来看这真的会“帮助”你。 我被告知应该使用卷积来解决此类问题,而不是使用递归神经网络,因为它不处理任何类型的时间序列。我也使用了 4 的过滤器大小,并且在卷积后给出的模型中通常是池化。这就是我使用池化的原因。 【参考方案1】:我相信您可能会发现这篇以前的堆栈 *** 帖子(它似乎正在解决您的问题)很有帮助:Error when checking model input: expected lstm_1_input to have 3 dimensions, but got array with shape (339732, 29)
【讨论】:
这是一个 CNN,而不是一个 RNN。以上是关于卷积神经网络形状的主要内容,如果未能解决你的问题,请参考以下文章