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

Tensorflow数据读取有三种方式:

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

这里介绍下:

TF生成数据的方式

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

# 原始的变量  
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:

①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.生成序列

⑦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.生成随机数

⑨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]] 

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

shape: 用于表示维度,通常为一个int32类型数组,或者一个一维(1-D)的tf.int32数字.注意不能直接使用数字
dtype: 所要创建的tensor对象的数据类型
tensor: tensor对象
mean:数据类型为dtype的张量值或Python值。是正态分布的均值。
stddev:数据类型为dtype的张量值或Python值。是正态分布的标准差
seed:一个Python整数。是随机种子。
name: 操作的名称(可选)
操作案例:这里之选择一个操作,用with开与关
data1=tf.zeros([2, 3],tf.int32)
with tf.Session() as sess1:
    print(sess1.run(data1))
receive:
[[0 0 0]
 [0 0 0]]   

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

BZOJ4517: [Sdoi2016]排列计数(组合数+错位排列)

Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 的值为 i,则称 ...

2907
来自专栏大数据挖掘DT机器学习

python数据分析师面试题选

python数据分析部分 1. 如何利用SciKit包训练一个简单的线性回归模型 利用linear_model.LinearRegression()函数 #...

5616
来自专栏瓜大三哥

视频压缩编码技术(H.264) 之算术编码

早在1948年,香农就提出将信源符号依其出现的概率降序排序,用符号序列累计概率的二进值作为对芯源的编码,并从理论上论证了它的优越性。1960年, Peter E...

1163
来自专栏bboysoul

1475: C语言实验题――一元二次方程 II

描述:求一元二次方程ax2+bx+c=0的解。a,b,c为任意实数。 输入:输入数据有一行,包括a b c的值 输出:按以下格式输出方程的根x1和x2。x1...

1213
来自专栏数据结构与算法

Day4晚笔记

数据结构 并查集:捆绑两个点的信息,判断对错 倍增:LCA, 字符串 hash,模拟, 最小表示法 给定一个环状字符串,切开,使得字符串的字典序最小 图和树 割...

2614
来自专栏数据结构与算法

2-SAT速成

本文只做总结性说明 2-SAT 2-SAT是k-SAT问题的一种,k-SAT问题在k>=3时已经被证明是NP完全问题 2-SAT问题定义比较简单 有n个布尔变量...

2846
来自专栏小樱的经验随笔

hihoCoder #1142 : 三分求极值

#1142 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: ? 在直...

3499
来自专栏marsggbo

Udacity并行计算课程笔记- Fundamental GPU Algorithms (Reduce, Scan, Histogram)

如下图示,第一种情况只有一个工人挖洞,他需要8小时才能完成,所以工作总量(Work)是8小时。第二种情况是有4个工人,它们2个小时就能完成挖洞任务,此时工作总量...

1231
来自专栏王亚昌的专栏

A*算法C实现

参考 http://www.cppblog.com/christanxw/archive/2006/04/07/5126.html 实现了A*算法,模拟了一下,...

952
来自专栏软件开发 -- 分享 互助 成长

经典算法学习之回溯法

回溯法的应用范围:只要能把待求解的问题分成不太多的步骤,每个步骤又只有不太多的选择就可以考虑使用回溯法。  若用回溯法求问题的所有解时,要回溯到根,且根结点的所...

2358

扫码关注云+社区

领取腾讯云代金券