tf命令补充

1

tf.gather(等待被取元素的张量,索引)

    tf.gather根据索引,从输入张量中依次取元素,构成一个新的张量。
    
    索引的维度可以小于张量的维度。这时,取张量元素时,会把相应的低维当作一个整体取出来。
    
    例如
    
    假设输入张量 [[1,2,3],[4,5,6],[7,8,9]] 是个二维的
    
    如果只给一个一维索引0. 它就把[1,2,3]整体取出:
    
    如果给两个一维索引,0和1,它就形成[[1,2,3],[4,5,6]]

2

reduce_sum应该理解为压缩求和,用于降维



# 'x' is [[1, 1, 1]

#         [1, 1, 1]]

#求和

tf.reduce_sum(x) ==> 6

#按列求和

tf.reduce_sum(x, 0) ==> [2, 2, 2]

#按行求和

tf.reduce_sum(x, 1) ==> [3, 3]

#按照行的维度求和

tf.reduce_sum(x, 1, keep_dims=True) ==> [[3], [3]]

#行列求和

tf.reduce_sum(x, [0, 1]) ==> 6

3

tf.argmax(vector, 1):返回的是vector中的最大值的索引号,如果vector是一个向量,那就返回一个值,如果是一个矩阵,那就返回一个向量,这个向量的每一个维度都是相对应矩阵行的最大值元素的索引号。

import tensorflow as tf
import numpy as np
 
A = [[1,3,4,5,6]]
B = [[1,3,4], [2,4,1]]
 
with tf.Session() as sess:
    print(sess.run(tf.argmax(A, 1)))
    print(sess.run(tf.argmax(B, 1)))

输出:
[4]
[2 1]

4

tf.Variable(initializer, name) 
功能:保存和更新神经网络中的参数。 
参数:(1)initializer:初始化参数(2)name:变量名 
例子:
import tensorflow as tf  

#1.tensorflow随机数生成函数


#变量a是一个随机生成的满足正态分布[0,1]的,数据规模为2*2矩阵的数据。其中mean表示为期望(均值),stddev表示为方差。
a= tf.Variable(tf.random_normal(shape=[2,2], mean=0, stddev=1), name='a')  

#变量b是...,但如果随机出来的值偏离平均值超过2个标准差,那么这个数将会被重新随机。
b=tf.Variable(tf.truncated_normal(shape=[2,2], mean=0, stddev=1),name='b')

#变量c是一个随机生成的数据规模为2*2矩阵的数据,其中矩阵中的元素大小满足(-2,2)
c=tf.Variable(tf.random_uniform(shape=[2,2],minval=-2,maxval=2,dtype=tf.float32,name='c'))


#2.tensorflow常数生成函数


e=tf.Variable(tf.zeros([1,2],tf.int32,name='e'))
f=tf.Variable(tf.ones([3,4],tf.int32,name='f'))
g=tf.Variable(tf.fill([5,6],1,name='g'))
h=tf.Variable(tf.constant([1,2,3],name='h'))

with tf.Session() as sess:  
    sess.run(tf. global_variables_initializer())  

    print(sess.run(a))
    print(sess.run(b))
    print(sess.run(c))

    print(sess.run(e))
    print(sess.run(f))
    print(sess.run(g))
    print(sess.run(h))
结果: 
[[-0.38980678 0.30893806] 
[-0.98391175 1.02173746]] 
[[-0.07013009 -1.07275367] 
[ 0.43275923 -1.85455608]] 
[[-0.0278039 0.88930941] 
[ 0.15009832 1.51027441]] 
[[0 0]] 
[[1 1 1 1] 
[1 1 1 1] 
[1 1 1 1]] 
[[1 1 1 1 1 1] 
[1 1 1 1 1 1] 
[1 1 1 1 1 1] 
[1 1 1 1 1 1] 
[1 1 1 1 1 1]] 
[1 2 3]

5

tf.nn,tf.layers, tf.contrib模块有很多功能是重复的

下面是对三个模块的简述:

tf.nn :提供神经网络相关操作的支持,包括卷积操作(conv)、池化操作(pooling)、归一化、loss、分类操作、embedding、RNN、Evaluation。
tf.layers:主要提供的高层的神经网络,主要和卷积相关的,tf.nn会更底层一些。
tf.contrib:tf.contrib.layers提供够将计算图中的 网络层、正则化、摘要操作、是构建计算图的高级操作,但是tf.contrib包含不稳定和实验代码,有可能以后API会改变

6
https://blog.csdn.net/jiaoyangwm/article/details/79247434
激活函数

7

tf.nn.relu(features, name = None)
 这个函数的作用是计算激活函数 relu,即 max(features, 0)。即将矩阵中每行的非最大值置0。

import tensorflow as tf

a = tf.constant([-1.0, 2.0])
with tf.Session() as sess:
    b = tf.nn.relu(a)
    print sess.run(b)
以上程序输出的结果是:[0. 2.]

8

https://www.cnblogs.com/qggg/p/6832342.html
卷积介绍
tf.nn.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

9
https://www.cnblogs.com/qggg/p/6832705.html
tf.nn.max_pool 介绍

max pooling是CNN当中的最大值池化操作,其实用法和卷积很类似

有些地方可以从卷积去参考【TensorFlow】tf.nn.conv2d是怎样实现卷积的?

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]这种形式

猜你喜欢

转载自blog.csdn.net/weixin_43758551/article/details/88661382