前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tensorflow载入数据的三种方式 之 TF生成数据的方法

tensorflow载入数据的三种方式 之 TF生成数据的方法

作者头像
学到老
发布2019-02-14 16:30:30
8650
发布2019-02-14 16:30:30
举报

Tensorflow数据读取有三种方式:

  • Preloaded data: 预加载数据 Feeding:
  • Python产生数据,再把数据喂给后端。 Reading from
  • file: 从文件中直接读取 具体可以参考:极客学院的数据读取

这里介绍下:

TF生成数据的方式

正常情况下,使用tf.initialize_all_variables()初始化变量,在完全构建好模型并加载之后才运行这个操作。生成数据的主要方法如下 1)如果需要利用已经初始化的参数给其他变量赋值 TF的变量有个initialized_value()属性,就是初始化的值,使用方法如下:

代码语言:javascript
复制
# 原始的变量  
weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),name="weights")  
# 创造相同内容的变量  
w2 = tf.Variable(weights.initialized_value(), name="w2")  
# 也可以直接乘以比例  
w_twice = tf.Variable(weights.initialized_value() * 0.2, name="w_twice") 

tf.set_random_seed(seed) 设置产生随机数的种子。 1. 生成tensor:

代码语言:javascript
复制
①tf.zeros(shape, dtype=tf.float32, name=None)
#tf.zeros([2, 3], int32) ==> [[0, 0, 0], [0, 0, 0]]
②tf.ones(shape, dtype=tf.float32, name=None)
#tf.ones([2, 3], int32) ==> [[1, 1, 1], [1, 1, 1]]
③tf.zeros_like(tensor, dtype=None, name=None)
新建一个与给定的tensor类型大小一致的tensor,其所有元素为1。# 'tensor' is [[1, 2, 3], [4, 5, 6]] 
tf.ones_like(tensor) ==> [[1, 1, 1], [1, 1, 1]]
④tf.constant(value, dtype=None, shape=None, name='Const')创建一个常量tensor,先给出value,可以设定其shape
# 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.]

⑤tf.fill(dims, value, name=None)
创建一个形状大小为dim的tensor,其初始值为value
# Output tensor has shape [2, 3]. 
 fill([2, 3], 9) ==> [[9, 9, 9],[9, 9, 9]]
⑥tf.ones_like(tensor, dtype=None, name=None)

2.生成序列

代码语言:javascript
复制
⑦tf.range(start, limit, delta=1, name='range')
返回一个tensor等差数列,该tensor中的数值在start到limit之间,不包括limit,delta是等差数列的差值。start,limit和delta都是int32类型。
# 'start' is 3 
# 'limit' is 18 
# 'delta' is 3
tf.range(start, limit, delta) ==> [3, 6, 9, 12, 15] 
# 'limit' is 5 start is 0
tf.range(start, limit) ==> [0, 1, 2, 3, 4]
⑧tf.linspace(start, stop, num, name=None)返回一个tensor,该tensor中的数值在start到stop区间之间取等差数列(包含start和stop),如果num>1则差值为(stop-start)/(num-1),以保证最后一个元素的值为stop。其中,start和stop必须为tf.float32或tf.float64。num的类型为int。
tf.linspace(10.0, 12.0, 3, name="linspace") => [ 10.0 11.0 12.0]

3.生成随机数

代码语言:javascript
复制
⑨tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
返回一个tensor其中的元素的值服从正态分布。
seed: A Python integer. Used to create a random seed for the distribution.See set_random_seed for behavior。
⑩tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
返回一个tensor其中的元素服从截断正态分布
理解:shape表示生成张量的维度,mean是均值,stddev是标准差。这个函数产生正太分布,均值和标准差自己设定。这是一个截断的产生正太分布的函数,就是说产生正太分布的值如果与均值的差值大于两倍的标准差,那就重新生成。和一般的正太分布的产生随机数据比起来,这个函数产生的随机数与均值的差距不会超过两倍的标准差,但是一般的别的函数是可能的。
⑩①tf.random_uniform(shape, minval=0.0, maxval=1.0, dtype=tf.float32, seed=None, name=None)
返回一个形状为shape的tensor,其中的元素服从minval和maxval之间的均匀分布。
⑩②tf.random_shuffle(value, seed=None, name=None)
对value(是一个tensor)的第一维进行随机化。
       [[1,2],            [[2,3],
        [2,3],     ==>     [1,2],
        [3,4]]             [3,4]] 

参数说明:参考官网:链接

代码语言:javascript
复制
shape: 用于表示维度,通常为一个int32类型数组,或者一个一维(1-D)的tf.int32数字.注意不能直接使用数字
dtype: 所要创建的tensor对象的数据类型
tensor: tensor对象
mean:数据类型为dtype的张量值或Python值。是正态分布的均值。
stddev:数据类型为dtype的张量值或Python值。是正态分布的标准差
seed:一个Python整数。是随机种子。
name: 操作的名称(可选)
操作案例:这里之选择一个操作,用with开与关
代码语言:javascript
复制
data1=tf.zeros([2, 3],tf.int32)
with tf.Session() as sess1:
    print(sess1.run(data1))
receive:
[[0 0 0]
 [0 0 0]]
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年01月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • TF生成数据的方式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档