Keras 在conv层后添加一个稠密层

Keras 在conv层后添加一个稠密层,keras,keras-layer,Keras,Keras Layer,Conv之后,我想添加一个稠密的,如下所示: import keras.layers as KL input_image = KL.Input([None, None, 3], name = 'input_image') x = KL.Conv2D(64, (3,3), padding='same')(input_image) 但会有一个错误: ValueError:要展平的输入形状未完全定义 没有,没有,64。确保传递完整的输入形状或 将批处理输入形状参数添加到模型中的第一层 所以,如果我想

Conv之后,我想添加一个稠密的,如下所示:

import keras.layers as KL
input_image = KL.Input([None, None, 3], name = 'input_image')
x = KL.Conv2D(64, (3,3), padding='same')(input_image)
但会有一个错误:

ValueError:要展平的输入形状未完全定义 没有,没有,64。确保传递完整的输入形状或 将批处理输入形状参数添加到模型中的第一层


所以,如果我想要一个包含conv和dense的模型,它可以接受任何大小的输入,我应该怎么做?

神经网络不能处理可变大小的输入。除非你在处理递归神经网络

对于具有可变大小输入的网络,网络的权重是什么样的


通常,您会为输入层选择一个大小,并调整或填充输入以匹配该大小。

神经网络不适用于可变大小的输入。除非你在处理递归神经网络

对于具有可变大小输入的网络,网络的权重是什么样的


通常,您会为输入层选择一个大小,并调整或填充输入以匹配该大小。

尽管这与展平输入不同,但您可以使用:


这将把维度从None、None、None 64更改为None、64(包括批处理维度)。全局最大池是一种常用的方法,用于关闭convultional网络,并将输出反馈到稠密的神经网络中

虽然这与平展输入不同,但您可以使用:


这将把维度从None、None、None 64更改为None、64(包括批处理维度)。全局最大池是一种常用的方法,用于关闭convultional网络,并将输出反馈到稠密的神经网络中

要构建CNN模型,您应该先使用池层,然后使用扁平层,如下面的示例所示

池层将减少卷积网络中要分析的数据数量,然后我们使用扁平化将数据作为密集层的正常输入。此外,在卷积层之后,我们总是添加一个池层

以下示例适用于一维CNN,但其结构与二维CNN相同。同样,“展平”会更改输出的形状,以便在最后一个密集层中正确使用

 x = KL.GlobalMaxPooling2D()(x)

要构建CNN模型,您应该先使用池层,然后使用扁平层,如下面的示例所示

池层将减少卷积网络中要分析的数据数量,然后我们使用扁平化将数据作为密集层的正常输入。此外,在卷积层之后,我们总是添加一个池层

以下示例适用于一维CNN,但其结构与二维CNN相同。同样,“展平”会更改输出的形状,以便在最后一个密集层中正确使用

 x = KL.GlobalMaxPooling2D()(x)
    model = Sequential()
    model.add(Conv1D(num_filters_to_use, (filters_size_tuple), input_shape=features_array_shape, activation='relu'))
    model.add(MaxPooling1D(pool_size=2))
    model.add(Flatten())
    model.add(Dropout(0.5))
    model.add(Dense(num_classes, activation='softmax'))