Tensorflow 基本用法(二)
程序员文章站
2022-05-23 21:46:42
...
介绍在官方文档中MNIST进阶中用到的函数
1. tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
- shape:生成张量的形状
- mean:正态分布的均值
- stddev:正太分布的标准差
- dtype:数据类型
- seed:种子
- name:操作的命名(可以不指定)
- 返回值是随机截断的正太分布值填充的张量
initial = tf.truncated_normal([3,3], stddev=0.1)
sess = tf.InteractiveSession()
print(initial.eval())
sess.close()
#[[-0.1338151 -0.01149522 -0.00680522]
[ 0.07212916 -0.1230556 0.07994577]
[ 0.1255837 -0.1215869 -0.13001645]]
2. tf.constant(value, dtype=None, shape=None, name=’Const’)
- value:用于填充的数值或列表
- dtype:数据类型
- shape:生成张量的形状
- name:操作的命名(可以不指定)
- 返回值一个常数张量
# Constant 1-D Tensor populated with value list.
tensor = tf.constant([1, 2, 3, 4, 5, 6, 7]) => [1 2 3 4 5 6 7]
# Constant 2-D tensor populated with scalar value -1.
tensor = tf.constant(-1.0, shape=[2, 3]) => [[-1. -1. -1.]
[-1. -1. -1.]]
# Constant 2-D tensor populated with value list.
tensor = tf.constant([1,2,3,4,5,6], shape=[2,3]) => [[1 2 3]
[4 5 6]]
3. tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=True, data_format=’NHWC’, dilations=[1, 1, 1, 1], name=None)
- input:输入张量,形状是4D
- filter:卷积核,形状是4D张量,[核高度 , 核宽度 , 输入通道数, 输出通道数]
- strides:步长
- padding:填充方式,只能选SAME或VALID,SAME在图像边缘进行0填充,VALID不进行填充
- use_cudnn_on_gpu:使用gpu加速
- data_format:输入维度格式,NHWC依次是批,高度,宽度,通道;NCHW依次是批,通道,高度,宽度
- dilations:输入的扩张
- name:操作的命名(可以不指定)
- 返回值一个类型与输入相同的张量
具体操作在这篇博客介绍的非常详细 http://www.cnblogs.com/welhzh/p/6607581.html
4. tf.nn.max_pool(value, ksize, strides, padding, data_format=’NHWC’, name=None)
- value:输入张量,形状是4D,格式由data_format
- ksize:输入张量每个维度的窗口大小,一个4个元素的列表或元组
- strides:步长
- padding:填充方式,只能选SAME或VALID,SAME在图像边缘进行0填充,VALID不进行填充
- data_format:输入维度格式,NHWC依次是批,高度,宽度,通道;NCHW依次是批,通道,高度,宽度
- name:操作的命名(可以不指定)
- 返回值是经过最大池化的data_format格式的张量
sess = tf.InteractiveSession()
a = tf.constant(np.arange(9),shape = [1,3,3,1])
print(a.eval())
'''
[[[[0]
[1]
[2]]
[[3]
[4]
[5]]
[[6]
[7]
[8]]]]
'''
print(a.eval)
#<bound method Tensor.eval of <tf.Tensor 'Const_1:0' shape=(1, 3, 3, 1) dtype=int32>>
b = tf.nn.max_pool(a,ksize=[1, 2, 2, 1],strides=[1, 2, 2, 1], padding='SAME')
print(b.eval())
'''
[[[[4]
[5]]
[[7]
[8]]]]
'''
print(b.eval)
#<bound method Tensor.eval of <tf.Tensor 'MaxPool:0' shape=(1, 2, 2, 1) dtype=int32>> 形状改变了
sess.close()
5. tf.nn.relu(features, name=None)
- features:输入张量(图像特征)
- name:操作的命名(可以不指定)
- 返回值与输入类型相同的张量
sess = tf.InteractiveSession()
a = tf.constant([-1,-2,2,1],shape = [4])
print(a.eval())
#[-1 -2 2 1]
b = tf.nn.relu(a)
print(b.eval())
#[0 0 2 1]
sess.close()
6. tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None, name=None)
- x:输入张量
- keep_prob:神经元被选中概率
- noise_shape:选中/丢弃
- seed:种子
- name:操作的命名(可以不指定)
- 返回值是一个与输入相同形状的张量
keep_prob = tf.placeholder("float")
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)#必须设置keep_prob,并且keep_prob是一个占位符
上一篇: Spring属性依赖注入(手动装配)
下一篇: SQL注入手工检测