Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow tf.keras和keras之间Conv2D的输出形状不同?_Tensorflow_Keras - Fatal编程技术网

Tensorflow tf.keras和keras之间Conv2D的输出形状不同?

Tensorflow tf.keras和keras之间Conv2D的输出形状不同?,tensorflow,keras,Tensorflow,Keras,这可能是个愚蠢的问题,因为我对Keras和Tensorflow还不熟悉 我有一个简单的模型: classifier=Sequential() classifier.add(Convolution2D(32, 3, 3, input_shape=(64, 64, 3), activation='relu')) classifier.add(MaxPooling2D(pool_size=(2, 2))) classifier.add(Flatten()) classifier.add(Den

这可能是个愚蠢的问题,因为我对Keras和Tensorflow还不熟悉

我有一个简单的模型:

classifier=Sequential()

classifier.add(Convolution2D(32, 3, 3, input_shape=(64, 64, 3), activation='relu'))

classifier.add(MaxPooling2D(pool_size=(2, 2)))

classifier.add(Flatten())

classifier.add(Dense(units=128, activation='relu'))
classifier.add(Dense(units=128, activation='relu'))
classifier.add(Dense(units=2, activation='softmax'))

classifier.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

classifier.summary()
当使用
tf.keras.*
(如tensorflow.keras.models导入顺序)类运行时,
摘要
将第一层显示为:

Layer (type)                 Output Shape              Param #
=================================================================
conv2d (Conv2D)              (None, 21, 21, 32)        896
Layer (type)                 Output Shape              Param #
=================================================================
conv2d_1 (Conv2D)            (None, 62, 62, 32)        896
但是当使用
keras.*
(类似于keras.models中的
)类运行时,会导入顺序类<代码>摘要
将第一层显示为:

Layer (type)                 Output Shape              Param #
=================================================================
conv2d (Conv2D)              (None, 21, 21, 32)        896
Layer (type)                 Output Shape              Param #
=================================================================
conv2d_1 (Conv2D)            (None, 62, 62, 32)        896
为什么它们给出不同的输出形状


我使用的是tensorflow 2.0.0和keras 2.3.1,这实际上与内核大小有关。首先让我们检查一下

例1: 请注意,
Conv2D
中关于代码的微小变化是
classifier.add(Conv2D(32,3,3,input_shape=(64,64,3),activation='relu'))
,另一个是
kernel_size=(3,3)
。 示例1给出了如下输出形状:

(无、62、62、32)

例2: 让我们将其更改为您的版本

classifier=Sequential()

classifier.add(Conv2D(32, 3, 3, input_shape=(64, 64, 3), activation='relu'))
classifier.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

classifier.summary()
结果,

(无、21、21、32)896


结论是,
tf.keras
api和独立
keras
内核大小的解释不同。注意,我通过
tf.keras
api获得了这两个结果。

这实际上与
内核大小有关。首先让我们检查一下

例1: 请注意,
Conv2D
中关于代码的微小变化是
classifier.add(Conv2D(32,3,3,input_shape=(64,64,3),activation='relu'))
,另一个是
kernel_size=(3,3)
。 示例1给出了如下输出形状:

(无、62、62、32)

例2: 让我们将其更改为您的版本

classifier=Sequential()

classifier.add(Conv2D(32, 3, 3, input_shape=(64, 64, 3), activation='relu'))
classifier.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

classifier.summary()
结果,

(无、21、21、32)896

结论是,
tf.keras
api和独立
keras
内核大小的解释不同。注意,我通过
tf.keras
api获得了这两个结果