1. tf.nn.conv2d(x, W, strides=[1, 2, 2, 1], padding=‘SAME’)参数的理解
- shape= [5,5,1,32]
前面两个5,表示卷积核的长宽分别为5
1表示输入图像对应的通道数,比如输入的图像是单通道的则设置为1,如果是RGB三通道的,则设置为3
32表示卷积核的个数,对应输出32张图
- strides=[1, 2, 2, 1]
四个元素规定前后必须为1,中间两个数表示水平滑动和垂直滑动步长值
步长不为1的情况,文档里说了对于图片,因为只有两维,通常strides取[1,stride,stride,1]
- padding=‘SAME’
SAME表示在扫描的时候,如果遇到卷积核比剩下的元素要大时,这个时候需要补0进行最后一次的行扫描或者列扫描
2.tf.initialize_all_variables() 用于初始化变量
3.nn.ConvTranspose2d
nn.ConvTranspose2d的功能是进行反卷积操作
(1)输入格式:
nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True, dilation=1)
(2)参数的含义:
in_channels(int) – 输入信号的通道数
out_channels(int) – 卷积产生的通道数
kerner_size(int or tuple) - 卷积核的大小
stride(int or tuple,optional) - 卷积步长,即要将输入扩大的倍数。
padding(int or tuple, optional) - 输入的每一条边补充0的层数,高宽都增加2*padding
output_padding(int or tuple, optional) - 输出边补充0的层数,高宽都增加padding
groups(int, optional) – 从输入通道到输出通道的阻塞连接数
bias(bool, optional) - 如果bias=True,添加偏置
dilation(int or tuple, optional) – 卷积核元素之间的间距
4.tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None) :
shape表示生成张量的维度(a * a),mean是均值,stddev是标准差
参数:
shape: 一维整数张量或 Python 数组(输出张量的形状)比如3 * 3
mean: 正态分布的均值
stddev: 正态分布的标准差
dtype: 输出的类型
seed: 一个整数,当设置之后,每次生成的随机数都一样
name: 操作的名字(可选)
w1 = tf.Variable(tf.truncated_normal([filter_size, filter_size, image_depth, filter_depth], stddev=0.1))
5. tf.layers.conv2d_transpose 反卷积
conv2d_transpose(
inputs,
filters,
kernel_size,
strides=(1, 1),
padding=’valid’,
data_format=’channels_last’,
activation=None,
use_bias=True,
kernel_initializer=None,
bias_initializer=tf.zeros_initializer(),
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None,
trainable=True,
name=None,
reuse=None
)
比较关注的参数:
inputs: 输入的张量
filters: 输出卷积核的数量
kernel_size : 在卷积操作中卷积核的大小
strides: (不太理解,我直接理解成放大的倍数)
padding : ‘valid’ 或者 ‘same’。