tf.truncated_normal(),tf.pad()及其在卷积层的应用

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则不填边

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值