tf.truncated_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,seed=None,name=None)
函数功能:生成均值=mean=0,方差=stddev=1的正态分布矩阵,矩阵维度=shape,矩阵元素值范围[mean-2*stdeev, mean+2*stddev]
例子:
import tensorflow as tf
initial1 = tf.truncated_normal(shape=[3,3,2,1])#产生一个4维矩阵,最基本的元素是2行1列,
print(tf.Session().run(initial1))
initial2 = tf.truncated_normal(shape=[2,1])#产生一个2行1列的矩阵
print(tf.Session().run(initial2))#[[-0.981066 ]
# [ 0.3630936]]
tf.pad(tensor, paddings, mode='CONSTANT',name=None,constant_values=0)
函数功能:对张量tensor,进行补边,默认补0,
tensor:被填充的张量
paddings: 被填充的维度
mode: 填充模式,CONSTANT, REFLECT, SYMMETRIC
name: 该操作张量的名称
constant_values 用于在CONSTANT模式下,设置的填充值
例子:
import tensorflow as tf
t1 = tf.constant([[1, 2, 3], [4, 5, 6]]) #
paddings1 = tf.constant([[1, 2], [2, 1]])#paddings1=[a,b]=[[m1,m2],[m3,m4]]
# a=[m1,m2]=[1,2]代表在第一维度pad,即在t1的第一维上,从0到m1行填充0,从倒数第1行到倒数第m2行填充0
# b=[m3,m4],第二个元素值代表在第二维度pad,即在t1的第二维度,列上填充,从0到m3列填充0, 从倒数第1列到倒数第m4列填充0
t2 = tf.constant([[[1,2,3], [4,5,6], [7,8,9]]]) #
paddings2 = tf.constant([[0, 0], [2, 2], [1, 1]])
# [0,0]代表在第一维度pad,即在t2的第一维上填充,这里都是0,代表第一维度不填充
# [2,2]代表在第二维度pad,即在t2的第二维行上填充0,规则同上,就是上下各补两行0
# [1,1]代表在第二维度pad,即在t2的第三维列上填充,规则同上,左右各补两列0
with tf.Session() as sess:
# 例子1 二维
op = tf.pad(t1, paddings1, "CONSTANT")#对矩阵t1,现在第一个
print(t1.get_shape())
print(paddings1.get_shape())
print(sess.run(op)) #[[0 0 0 0 0 0]
# [0 0 1 2 3 0]
# [0 0 4 5 6 0]
# [0 0 0 0 0 0]
# [0 0 0 0 0 0]]
# 例子2 三维
print(t2.get_shape())
print(paddings2.get_shape())
op = tf.pad(t2, paddings2, "CONSTANT")
print(sess.run(op)) #[[[0 0 0 0 0]
# [0 0 0 0 0]
# [0 1 2 3 0]
# [0 4 5 6 0]
# [0 7 8 9 0]
# [0 0 0 0 0]
# [0 0 0 0 0]]]
tf.nn.conv2d (input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None)
函数功能:对输入input进行卷积运算
input: 一般指输入图片,要求为一个张量,shape=[batch_size,height, width, channel]
filter: 卷积核,要求也是一个张量,shape=[filter_height,filter_width,in_channel,out_channel]=[卷积核高度, 卷积核宽度,图像通道数(要和input的channel保持相等),卷积核数量]
strides:步长,卷积时在图像每一维的步长,这是一个一维的向量,[1,strides,strides,1],第一位和最后一位固定必须是1(分别对应batch_size和channels
padding:string 类型,值为SAME和valid, 表示的事卷积的形式,是否考虑边界,"same"是考虑边界,不足的时候用0去填边,valid则不填边