欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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是一个占位符