tf.nn.conv2d 与tf.layers.conv2d的区别
1. tf.nn.conv2d
tf.nn.conv2d(input, # 张量输入
filter, # 卷积核参数
strides, # 步长参数
padding, # 卷积方式
use_cudnn_on_gpu=None, # 是否是gpu加速
data_format=None, # 数据格式,与步长参数配合,决定移动方式
name=None): # 名字,用于tensorboard图形显示时使用
关键参数如下
input.shape=[batch, in_height, in_width, in_channels]
filter.shape= [filter_height, filter_width, in_channels, out_channels ]
strides = [1, stride, stride, 1].
必须满足strides[0] = strides[3] = 1.
在大多数情况下 strides = [1, stride, stride, 1].
2. tf.layers.conv2d
这是tensorflow 更高一级的api,和keras.layer类似
conv2d(inputs, filters, kernel_size,
strides=(1, 1),
padding='valid',
data_format='channels_last',
dilation_rate=(1, 1),
activation=None,
use_bias=True,
kernel_initializer=None,
bias_initializer=<tensorflow.python.ops.init_ops.Zeros object at 0x000002596A1FD898>,
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None,
trainable=True,
name=None,
reuse=None)
- input 和tf.nn.conv2d 一样,必须是4维张量,input.shape=[batch, in_height, in_width, in_channels]
- filters:整数,表示输出空间的维数(即卷积过滤器的数量),对应于tf.nn.conv2d中的out_channels
- kernel_size:一个整数,或者包含了两个整数的元组/队列,表示卷积窗的高和宽。如果是一个整数,则宽高相等。 对应于tf.nn.conv2d中的(filter_height, filter_width)
2. keras.layers.conv2d
keras.layers.convolutional.Conv2D(filters, kernel_size, strides=(1, 1), padding='valid', data_format=None, dilation_rate=(1, 1), activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)
filters:卷积核的数目(即输出的维度)
kernel_size:单个整数或由两个整数构成的list/tuple,卷积核的宽度和长度。如为单个整数,则表示在各个空间维度的相同长度。
strides:单个整数或由两个整数构成的list/tuple,为卷积的步长。如为单个整数,则表示在各个空间维度的相同步长。任何不为1的strides均与任何不为1的dilation_rate均不兼容
padding:补0策略,为“valid”, “same” 。“valid”代表只进行有效的卷积,即对边界数据不处理。“same”代表保留边界处的卷积结果,通常会导致输出shape与输入shape相同。
activation:激活函数,为预定义的激活函数名(参考激活函数),或逐元素(element-wise)的Theano函数。如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x)
dilation_rate:单个整数或由两个个整数构成的list/tuple,指定dilated convolution中的膨胀比例。任何不为1的dilation_rate均与任何不为1的strides均不兼容。
data_format:字符串,“channels_first”或“channels_last”之一,代表图像的通道维的位置。该参数是Keras 1.x中的image_dim_ordering,“channels_last”对应原本的“tf”,“channels_first”对应原本的“th”。以128x128的RGB图像为例,“channels_first”应将数据组织为(3,128,128),而“channels_last”应将数据组织为(128,128,3)。该参数的默认值是~/.keras/keras.json中设置的值,若从未设置过,则为“channels_last”。
use_bias:布尔值,是否使用偏置项
kernel_initializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers
bias_initializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers
kernel_regularizer:施加在权重上的正则项,为Regularizer对象
bias_regularizer:施加在偏置向量上的正则项,为Regularizer对象
activity_regularizer:施加在输出上的正则项,为Regularizer对象
kernel_constraints:施加在权重上的约束项,为Constraints对象
bias_constraints:施加在偏置上的约束项,为Constraints对象
相关文章
- python和pycharm以及anaconda的安装顺序_简述信息消息信号三者的区别与联系
- MySQL存储引擎MyISAM和InnoDB的区别
- Sql Server datetime 和 smalldatetime时间函数的区别
- 如何区别标准POE交换机和非标POE交换机
- encoder和decoder的区别_python encode函数
- Windows 10版本business_editions和consumer_editions的区别?
- 【Java面试】毕业季高频面试题String,StringBuffer好和StringBuilder的区别
- 五年经验的前端社招被问:CPU 和 GPU 有什么区别?
- 静态网页与动态网页的区别
- Java中的String,StringBuilder,StringBuffer三者的区别详解编程语言
- 面向连接和无连接的套接字到底有什么区别?
- 比较不同Linux系统的特点与优势(各种linux系统区别)
- Oracleround()函数与trunc()函数区别介绍
- 浅析dropuser与deletefrommysql.user的区别
- JQuery与JS里submit()的区别示例介绍