tf.keras.layers.Conv2D用法

岗楼

我是CNN和tensorflow的新手。自完成Geron的动手TF书以来,已经有2天了。如果有人可以帮助我,我将不胜感激。

目标:了解keras官方文档(https://www.tensorflow.org/api_docs/python/tf/keras/layers/Conv2D)如何使用Conv2D (m,n...)符号以及为何使用符号。

问题:我编写了两组代码。我理解第一个,它使用明确的声明集来表示filtersand的数量kernel_size

TF和Python版本:

sys.version
Out: '3.7.9 (default, Aug 31 2020, 17:10:11) [MSC v.1916 64 bit (AMD64)]'
tf.__version__
Out: '2.3.0'

代码1:

import tensorflow as tf

input_shape = (4, 30, 60, 3) #Sample 30x60 images with RGB channel. `batch_size` = 4

a1=tf.keras.layers.Conv2D(filters=10,kernel_size=(3,3), input_shape=input_shape[1:])
a1(tf.random.normal(input_shape)).shape
a1.filters
a1.kernel_size

model = tf.keras.Sequential()
model.add(a1)
model.output_shape
model.summary()

输出:

Out[99]: TensorShape([4, 28, 58, 10]) #we are not using padding. So, the shape of tensor is 4 batch x 28x58 x 10 filters
Out[99]: 10 # number of filters
Out[99]: (3, 3) #kernel size 
Out[99]: (None, 28, 58, 10) #this is the feature map for one image
Model: "sequential_24"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_34 (Conv2D)           (None, 28, 58, 10)        280       
=================================================================
Total params: 280
Trainable params: 280
Non-trainable params: 0
_________________________________________________________________

我对上面的输出很好。我已经在上面添加了我的想法。

代码2:现在,我修改了上面的代码中不明确提到kernel_sizefilters按照上面的官方文件。

a2=tf.keras.layers.Conv2D(10,3,3, input_shape=input_shape[1:]) #here's the change.
a2(tf.random.normal(input_shape)).shape
a2.filters
a2.kernel_size

model = tf.keras.Sequential()
model.add(a2)
model.output_shape
model.summary()

输出:

Out[100]: TensorShape([4, 10, 20, 10])
Out[100]: 10
Out[100]: (3, 3)
Out[100]: (None, 10, 20, 10)
Model: "sequential_25"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_35 (Conv2D)           (None, 10, 20, 10)        280       
=================================================================
Total params: 280
Trainable params: 280
Non-trainable params: 0
_________________________________________________________________

如我们所见,唯一的区别是代码1使用,Conv2D(filters=10,kernel_size=(3,3),...代码2使用Conv2D(10,3,3,...而且filterskernel_size也一样。但是,output_shape完全不同。

为什么是这样?有人可以解释一下吗?我在keras官方文档(https://www.tensorflow.org/api_docs/python/tf/keras/layers/Conv2D上找不到任何内容

戴维·安吉里里(Davide Anghileri)

使用tf.keras.layers.Conv2D()时,应将第二个参数(kernel_size)作为元组传递,(3, 3)否则,您将分配第二个参数kernel_size = 3,然后分配第三个参数stride = 3。通过使用3的跨度,您会看到一个input_shape,它是原始inputh形状的1/3,四舍五入为最接近的整数。

因此,将您的代码更改为:

a2=tf.keras.layers.Conv2D(10, (3,3), input_shape=input_shape[1:])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Tensorflow 2中的tf.contrib.layers.fully_connected()吗?

来自分类Dev

Keras:过度拟合的Conv2D

来自分类Dev

如何在自定义训练循环中使用tf.keras.layers.BatchNormalization()?

来自分类Dev

Conv2D keras中的稳压器

来自分类Dev

了解Keras Conv2D层中的参数数量

来自分类Dev

TensorFlow 2.0如何从tf.keras.layers层获取可训练变量,例如Conv2D或Dense

来自分类Dev

Tensorflow-建立LSTM模型-需要tf.keras.layers.Dense()

来自分类Dev

在Keras中是否可以看到Conv2D层之后的输出

来自分类Dev

具有padding ='SAME'的Tensorflow / Keras Conv2D层的行为异常

来自分类Dev

使用tf.keras.layers.concatenate()作为Tensorflow中的自定义层

来自分类Dev

如何初始化函数“ tf.keras.layers.prelu”

来自分类Dev

无法将tf.keras.layers.ConvLSTM2D图层转换为打开vino中间表示形式

来自分类Dev

在Keras.model中使用tf.keras.layers

来自分类Dev

tf.keras.layers.Dense到底做什么?

来自分类Dev

来自tf.nn.conv2d和keras.layers.Conv2D的不相等输出

来自分类Dev

tf.layers.globalAveragePooling2d()的TFJS示例

来自分类Dev

tf.keras.layers.Conv1D是否支持RaggedTensor输入?

来自分类Dev

Tensorflow Keras Conv2D多个过滤器

来自分类Dev

如何理解Keras Conv2D层的第一个论点?

来自分类Dev

Colab + TPU不支持TF 2.3.0 tf.keras.layers.experimental.preprocessing

来自分类Dev

Tensorflow build()如何从tf.keras.layers.Layer工作

来自分类Dev

如何在keras中将Conv1D的输出与Conv2D的输出合并

来自分类Dev

Keras Conv2D和LSTM的尺寸问题

来自分类Dev

将tf.keras.layers与Tensorflow低级API结合使用

来自分类Dev

使用tf.random多次运行会话将为conv2d返回不同的值

来自分类Dev

keras Conv2d 权重矩阵大小反转

来自分类Dev

了解 keras.backend.max 与 tf.random_normal 的用法

来自分类Dev

CNN Keras:ValueError:由 'conv2d 的 2 减去 3 引起的负尺寸大小

来自分类Dev

tf.keras.layers.Layer 中的 kernel_regularizer 参数在优化损失函数方面实际实现了什么?

Related 相关文章

  1. 1

    Tensorflow 2中的tf.contrib.layers.fully_connected()吗?

  2. 2

    Keras:过度拟合的Conv2D

  3. 3

    如何在自定义训练循环中使用tf.keras.layers.BatchNormalization()?

  4. 4

    Conv2D keras中的稳压器

  5. 5

    了解Keras Conv2D层中的参数数量

  6. 6

    TensorFlow 2.0如何从tf.keras.layers层获取可训练变量,例如Conv2D或Dense

  7. 7

    Tensorflow-建立LSTM模型-需要tf.keras.layers.Dense()

  8. 8

    在Keras中是否可以看到Conv2D层之后的输出

  9. 9

    具有padding ='SAME'的Tensorflow / Keras Conv2D层的行为异常

  10. 10

    使用tf.keras.layers.concatenate()作为Tensorflow中的自定义层

  11. 11

    如何初始化函数“ tf.keras.layers.prelu”

  12. 12

    无法将tf.keras.layers.ConvLSTM2D图层转换为打开vino中间表示形式

  13. 13

    在Keras.model中使用tf.keras.layers

  14. 14

    tf.keras.layers.Dense到底做什么?

  15. 15

    来自tf.nn.conv2d和keras.layers.Conv2D的不相等输出

  16. 16

    tf.layers.globalAveragePooling2d()的TFJS示例

  17. 17

    tf.keras.layers.Conv1D是否支持RaggedTensor输入?

  18. 18

    Tensorflow Keras Conv2D多个过滤器

  19. 19

    如何理解Keras Conv2D层的第一个论点?

  20. 20

    Colab + TPU不支持TF 2.3.0 tf.keras.layers.experimental.preprocessing

  21. 21

    Tensorflow build()如何从tf.keras.layers.Layer工作

  22. 22

    如何在keras中将Conv1D的输出与Conv2D的输出合并

  23. 23

    Keras Conv2D和LSTM的尺寸问题

  24. 24

    将tf.keras.layers与Tensorflow低级API结合使用

  25. 25

    使用tf.random多次运行会话将为conv2d返回不同的值

  26. 26

    keras Conv2d 权重矩阵大小反转

  27. 27

    了解 keras.backend.max 与 tf.random_normal 的用法

  28. 28

    CNN Keras:ValueError:由 'conv2d 的 2 减去 3 引起的负尺寸大小

  29. 29

    tf.keras.layers.Layer 中的 kernel_regularizer 参数在优化损失函数方面实际实现了什么?

热门标签

归档