赞
踩
- def conv2d(input, # 张量输入
- filter, # 卷积核参数
- strides, # 步长参数
- padding, # 卷积方式
- use_cudnn_on_gpu=None, # 是否是gpu加速
- data_format=None, # 数据格式,与步长参数配合,决定移动方式
- name=None): # 名字,用于tensorboard图形显示时使用
第一个参数input: 输入的图像,需要是一个4D的tensor[batch,height,width,channel],要求类型为float32和float64其中之一
第二个参数filter: 卷积核,要求一个4D的tensor[height, width,in_channel,out_channel]类型与input相同
第三个参数strides:步长,一个一维的向量,长度为4,[1,height,width,1],通常heigh和width都是相同的。表示滑动的步长
第四个参数padding:string的类型,只能是"SAME"和”valid“之一。same是填充padding,输出图片大小跟步长有关。valid是无padding,输出图片大小根据具体的公式计算。
第五个参数use_cudnn_un_gpu:是否使用cudnn加速,默认为true.
例如:步长为1,填充same
tf.nn.conv2d(x,w1,strides=[1,1,1,1],padding="SAME")
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]
这种形式
例如:池化窗口8*8 步长8*8 填充same
tf.nn.max_pool(a,ksize=[1,8,8,1],strides=[1,8,8,1],padding="SAME")
tf.nn.relu(features, name = None)
函数是将大于0的数保持不变,小于0的数置为0,在卷积神经网络中提供非线性。
- import tensorflow as tf
-
- a = tf.constant([[-2,-4],[4,-2]])
-
- with tf.Session() as sess:
-
- print(sess.run(tf.nn.relu(a)))
- [[0 0]
- [4 0]]
tf.contrib.layers.flatten(A)
给定一个输入A, 此函数将其每个样本转化为一维的向量,然后返回一个tensor,其维度为(batchsize,k),一般应用在卷积神经网络全连接层前,因为全连接层需要将输入数据变为一个向量。
例如:A是100*7*7*64的矩阵,通过转换后变成100*3136的矩阵。100是batchsize, 3136是7*7*64的乘积
- tf.contrib.layers.fully_connected(
- inputs,
- num_outputs,
- activation_fn=tf.nn.relu,
- normalizer_fn=None,
- normalizer_params=None,
- weights_initializer=initializers.xavier_initializer(),
- weights_regularizer=None,
- biases_initializer=tf.zeros_initializer(),
- biases_regularizer=None,
- reuse=None,
- variables_collections=None,
- outputs_collections=None,
- trainable=True,
- scope=None
- )
给定一个一维化的输入input, 输出个数num_outputs, 默认采用relu激活函数(可以None,不采用激活函数)。tensorflow的全连接层会自动初始化权值(w,b)并在模型训练时一直参与,所以在初始化参数的时候我们不需要去初始化他们。
例如:使用没有非线性激活函数的全连接层,输出为6个神经元
tf.contrib.layers.fully_connected(P,6,activation_fn=None)
tf.equal(a,b,name=None)
a,b维度必须相同,判断a,b是否相等,对a,b中的元素逐个进行判断,如果相等就是true,不相等就是false
- import tensorflow as tf
- a = [[1,2,3],[4,5,6]]
- b = [[1,0,3],[1,5,1]]
- with tf.Session() as sess:
- print(sess.run(tf.equal(a,b)))
-
- [[ True False True]
- [False True False]]
tf.cast(x,dtype,name=None)
函数的作用是执行张量数据类型转换。dtype是目标数据类型。
- t1 = tf.Variable([1,2,3,4,5])
- t2 = tf.cast(t1,dtype=tf.float32)
-
- [ 1. 2. 3. 4. 5.]
- tf.reduce_mean(input_tensor,
- axis=None,
- keep_dims=False,
- name=None,
- reduction_indices=None)
第一个参数input_tensor: 输入的待降维的tensor;
第二个参数axis: 指定的轴,如果不指定,则计算所有元素的均值;
第三个参数keep_dims:是否降维度,设置为True,输出的结果保持输入tensor的形状,设置为False,输出结果会降低维度;
第四个参数name: 操作的名称;
- import tensorflow as tf
- x = [[1,2,3],
- [1,2,3]]
- xx = tf.cast(x,tf.float32)
- mean_all = tf.reduce_mean(xx, keep_dims=False) #所有元素的平均值
- mean_0 = tf.reduce_mean(xx, axis=0, keep_dims=False) #纵轴
- mean_1 = tf.reduce_mean(xx, axis=1, keep_dims=False) #横轴
- with tf.Session() as sess:
- m_a,m_0,m_1 = sess.run([mean_all, mean_0, mean_1])
- print m_a # output: 2.0
- print m_0 # output: [ 1. 2. 3.]
- print m_1 #output: [ 2. 2.]
类似函数还有:
tf.reduce_sum :计算tensor指定轴方向上的所有元素的累加和;
tf.reduce_max : 计算tensor指定轴方向上的各个元素的最大值;
tf.reduce_all : 计算tensor指定轴方向上的各个元素的逻辑和(and运算);
tf.reduce_any: 计算tensor指定轴方向上的各个元素的逻辑或(or运算);
- tf.boolean_mask(
- tensor,
- mask,
- name='boolean_mask',
- axis=None
- )
将输入的数组tensor,根据mask掩码, 挑出想要的数据输出.
- import tensorflow as tf
- a = [1, 2, 3, 4]
- mask = [True, False, True, False]
- sess = tf.Session()
- print(sess.run(tf.boolean_mask(a, mask))) #[1 3]
参考链接
https://blog.csdn.net/LiQingBB/article/details/83449842
https://blog.csdn.net/Sophia_11/article/details/84729102
https://blog.csdn.net/dcrmg/article/details/79797826
https://blog.csdn.net/dcrmg/article/details/79747814
https://blog.csdn.net/ustbbsy/article/details/79564529
https://blog.csdn.net/fyq201749/article/details/82776968
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。