tensorflow中的一些基本用法-注意事项

1,tf中默认是 nhwc,而可以改为nchw,需要更改则需要data_format =‘NCHW’,

2,各种变换可以使用tf.transpose()做更改。

3,对于tf输出矩阵如何好看即axis的使用:

一般情况下对于axis =0,到 =3,分别表示了 n h w c的变化,如何立即:

一般一个图像是这么存放的:

[[[[1,2,3],[1,2,3],[1,2,3]],

[[4,5,6],[4,5,6],[4,5,6]]]]

表示2行3列,每个像素是3个channel表示。

即:nhwc为 1 x 2 x 3 x 3,

但是tf显示是这样的

[[[[1,2,3]

[1,2,3]

[1,2,3]]

[[4,5,6]

[4,5,6]

[4,5,6]]]]

4,kernal 中一般size 是  sizeh sizew  inputchannel, outputsize,即为kernal 长宽 个数,和输出大小

tf.nn.conv2d中的filter参数,是[filter_height, filter_width, in_channels, out_channels]的形式
filter1 = tf.constant(value=0, shape=[3,3,1,1],dtype=tf.float32)

5,tf中的上采样 参考 反卷积,Tensorflow的反卷积(上采样):https://blog.csdn.net/guvcolie/article/details/76785275中,

https://blog.csdn.net/nijiayan123/article/details/79416764?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

conv2d_transpose(value, filter, output_shape, strides, padding="SAME", data_format="NHWC", name=None),其中:
  1. 第二个参数filter:卷积核,它要求是一个Tensor,具有[filter_height, filter_width, out_channels, in_channels]这样的shape,具体含义是[卷积核的高度,卷积核的宽度,卷积核个数,图像通道数

6,比较好的理解测试 权重数量的 博客:https://blog.csdn.net/IT_BOY__/article/details/100552298。比较重要的是,当input的个数为n时候,kernal大小为m*m时候,输出为k的时候参数为:(m*m*n+1)*k,需要这么多参数。

7,对于如何理解tf.nn.conv2d和tf.nn.depth_wise_conv2d:注意2d卷积 中 对于 https://blog.csdn.net/weiyumeizi/article/details/82153821:tf.nn.conv2d、tf.layers.conv2d、tf.contrib.layers.conv2d,

其中tf.layers.conv2d最简单,不需要输入各种初始化参数,但是不好理解内部如何实现的,下面理解下:

输入:是  1*5*5*2的图像(nhwc),做卷积3*3 kernal的输出2个featuremap(即model = models.Sequential(),model.add(layers.Conv2D(2, (3, 3), activation='relu', input_shape=(5, 5, 2))))或者(

1 input_data =tf.Variable(np.random.rand(1,5,5,2),dtype=np.float32)
2 filter_data = tf.Variable(np.random.rand(3,3,2,2),dtype=np.float32)# kernalheight kernalwidth  inputnum  outputnum
3 y = tf.nn.conv2d(input_data,filter_data,strides=[1,1,1,1],padding='SAME') #)都表示了 如何表征待求参数权重的表达式:

为 mmnk的方式,所以内部逻辑是,n作为input表示几个 mm做卷积,而k表示几个输出,所以这个kernal应该是,注意keraml大小为 mmnk的方式

例如权重为 0  ,1 ,2 ,3 的阵列,则1 5 5 2 的卷积核为 3 3 2 2内部,利用3 3 的 0 1 卷积 和+bias 一次,利用3 3 的2 3 卷积第二次,两次后作为最后的featuremap输出。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值