Tensorflow 基本用法(二)

介绍在官方文档中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是一个占位符
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值