zoukankan      html  css  js  c++  java
  • TensorFlow conv2d实现卷积

    tf.nn.conv2d是TensorFlow里面实现卷积的函数,参考文档对它的介绍并不是很详细,实际上这是搭建卷积神经网络比较核心的一个方法,非常重要

    tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)

    除去name参数用以指定该操作的name,与方法有关的一共五个参数

    第一个参数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相同,有一个地方需要注意,第三维in_channels,就是参数input的第四维

    第三个参数strides:卷积时在图像每一维的步长,这是一个一维的向量,长度4

    第四个参数padding:string类型的量,只能是"SAME","VALID"其中之一,这个值决定了不同的卷积方式(后面会介绍)

    第五个参数:use_cudnn_on_gpu:bool类型,是否使用cudnn加速,默认为true

    结果返回一个Tensor,这个输出,就是我们常说的feature map

     

    import tensorflow as tf
    
    input = tf.Variable([
        [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]])
    input=tf.reshape(input,[1,4,4,1])
    filter = tf.Variable(tf.random_normal([2,2,1,1]))
    
    op = tf.nn.conv2d(input, filter, strides=[1, 1, 1, 1], padding='VALID')
    init=tf.global_variables_initializer()
    with tf.Session() as sess:
        sess.run(init)
        print(sess.run(input))
        print(sess.run(op))
    
    sess.close()

    s输出结果:

    [[[[ 1.]
    [ 2.]
    [ 3.]
    [ 4.]]

    [[ 5.]
    [ 6.]
    [ 7.]
    [ 8.]]

    [[ 8.]
    [ 7.]
    [ 6.]
    [ 5.]]

    [[ 4.]
    [ 3.]
    [ 2.]
    [ 1.]]]]


    [[[[ -5.89250851]
    [ -7.98477077]
    [-10.077034 ]]

    [[-12.00638008]
    [-12.8220768 ]
    [-13.63777256]]

    [[-12.93785667]
    [-10.84559441]
    [ -8.75333118]]]]

    参考:http://blog.csdn.net/mao_xiao_feng/article/details/53444333

  • 相关阅读:
    点滴线程(笔记)
    解决问题的思维方式之Problem->Desgin->Solution(笔记)
    阿朱分享:中国互联网十五年的22个创新模式(转)
    .NET JSON对象序列化和反序列化
    Centos防火墙设置
    跨平台的 NodeJS 组件解决 .NetCore 不支持 System.Drawing图形功能的若干问题
    Mysql 多行转一行
    redis中的缓存穿透 缓存击穿 缓存雪崩
    redis持久化
    redis事物
  • 原文地址:https://www.cnblogs.com/lovephysics/p/7219735.html
Copyright © 2011-2022 走看看