TensorFlow入门教程

  1. 神经网络相关操作
    1.1 tf.nn.conv2(input,filter,strides,padding,use_cudnn_gpu=None,name=None)

    input:指需要做卷积的输入图像,它要求是一个Tensor,
    具有[batch,in_height,in_width,in_channels]
    这样的shape,具体含义是[训练时一个batch的图片数量,
    图片高度, 图片宽度, 图像通道数],
    注意这是一个4维的Tensor,要求类型为float32和   
    float64其中之一
    
    filter:相当于CNN中的卷积核,它要求是一个Tensor,
    具有[filter_height, filter_width,in_channels, 
    out_channels]这样的shape,
    具体含义是[卷积核的高度,卷积核的宽度,图像通道数,卷
    积核个数],
    要求类型与参数input相同,filter的通道数要求与input的
    in_channels一致,
    有一个地方需要注意,第三维in_channels,就是参数
    input的第四维
    
    strides:卷积时在图像每一维的步长,这是一个一维的向
    量,长度4,strides[0]=strides[3]=1
    
    padding:string类型的量,只能是"SAME","VALID"其中
    之一,这个值决定了不同的卷积方式
    
    第五个参数:use_cudnn_on_gpu:bool类型,是否使用
    cudnn加速,默认为true
    
    结果返回一个Tensor,这个输出,就是我们常说的featuremap
    
input=tf.Variable(tf.random_normal([1,3,3,5]))
filter=tf.Variable(tf.random_normal([1,1,5,1]))
op=tf.nn.conv2d(input=input,filter=filter,strides=
[1,1,1,1],padding='VALID')

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    res=(sess.run(op))
    print(res.shape)#(1, 3, 3, 1)
    print(res)
1.2
tf.nn.max_pool(value,ksize,strides,padding,name=None)
第一个参数value:需要池化的输入,一般池化层接在卷积层后面,
所以输入通常是feature map,依然是[batch, height, 
width,channels]这样的shape

第二个参数ksize:池化窗口的大小,取一个四维向量,一般是
[1, height, width, 1],因为我们不想在batch和channels
上做池化,所以这两个维度设为了1

第三个参数strides:和卷积类似,窗口在每一个维度上滑动的步
长,一般也是[1, stride,stride, 1]

第四个参数padding:和卷积类似,可以取'VALID'或者'SAME'

 返回一个Tensor,类型不变,shape仍然是[batch, height, 
 width, channels]这种形式
a=tf.constant([#(2, 4, 4)
        [[1.0,2.0,3.0,4.0],
        [5.0,6.0,7.0,8.0],
        [8.0,7.0,6.0,5.0],
        [4.0,3.0,2.0,1.0]],
        [[4.0,3.0,2.0,1.0],
         [8.0,7.0,6.0,5.0],
         [1.0,2.0,3.0,4.0],
         [5.0,6.0,7.0,8.0]]
    ])
print(a.shape)
a=tf.reshape(a,[1,4,4,2])
pooling=tf.nn.max_pool(a,[1,2,2,1],[1,1,1,1],padding='VALID')
with tf.Session() as sess:
    print('image:')
    image=sess.run(a)
    print(image)
    print("result:")
    result=sess.run(pooling)
    print(result)
    print(result.shape)#(1, 3, 3, 2)
1.3
tf.nn.dr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值