【Tensorflow中创建张量的方法合集】zeros,ones,fill,constant,truncated_nomal,random_nomal,Variable,placeholder等
文章目录
- 固定值张量
- **tf.zeros(shape, dtype=tf.float32, name=None)**
- **tf.zeros_like(tensor, dtype=None, name=None)**
- **tf.ones(shape, dtype=tf.float32, name=None)**
- **tf.ones_like(tensor, dtype=None, name=None)**
- **tf.fill(dims, value, name=None)**
- **tf.constant(value, dtype=None, shape=None, name='Const')**
- 随机值张量
- tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
- tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
- 其它特殊的创建张量op
固定值张量
tf.zeros(shape, dtype=tf.float32, name=None)
创建所有元素设置为零的张量。此操作返回一个dtype具有形状shape和所有元素设置为零的类型的张量。
import tensorflow as tf
a = tf.zeros((3,4),name="demo")
with tf.Session() as sess:
print(a)
print(sess.run(a))
tf.zeros_like(tensor, dtype=None, name=None)
给tensor定单张量(),此操作返回tensor与所有元素设置为零相同的类型和形状的张量。
import tensorflow as tf
a = tf.zeros((3,4),name="demo")
b = tf.zeros_like(a, dtype=float,name="demo2")
with tf.Session() as sess:
print(a)
print(sess.run(a))
print(b)
print(sess.run(b))
tf.ones(shape, dtype=tf.float32, name=None)
创建一个所有元素设置为1的张量。此操作返回-个类型的张量,dtype形 状shape和所有元素设置为1.
import tensorflow as tf
a = tf.ones((3,6), dtype=tf.float32, name="demo3")
with tf.Session() as sess:
print(a)
print(sess.run(a))
tf.ones_like(tensor, dtype=None, name=None)
给tensor定单张量(),此操作返回tensor与所有元素设置为1相同的类型和形状的张量。
import tensorflow as tf
a = tf.ones((3,6), dtype=tf.float32, name="demo3")
b = tf.ones_like(a, dtype=float, name="demo4")
with tf.Session() as sess:
print(a)
print(sess.run(a))
print(b)
print(sess.run(b))
tf.fill(dims, value, name=None)
创建一个填充了标量值的张量。此操作创建一个张量的形状dims并填充它value.
import tensorflow as tf
a = tf.fill((3,4), 888, name="three")
with tf.Session() as sess:
print(a)
print(sess.run(a))
tf.constant(value, dtype=None, shape=None, name=‘Const’)
创建一个常数张量。
import tensorflow as tf
a = tf.constant(7, dtype=float, shape=None, name='Const')
with tf.Session() as sess:
print(a)
print(sess.run(a))
随机值张量
一般我们经常使用的随机数函数Math.random()产生的是服从均匀分布的随机数,能够模拟等概率出现的情 况,例如扔一个骰子,1到6点的概率应该相等,但现实生活中更多的随机现象是符合正态分布的,例如20 岁成年人的体重分布等。
假如我们在制作一个游戏,要随机设定许许多多NPC的身高,如果还用Math.random(), 生成从140 到220 之间的数字,就会发现每个身高段的人数是一样多的,这是比较无趣的,这样的世界也与我们习惯不同,现 实应该是特别高和特别矮的都很少,处于中间的人数最多,这就要求随机函数符合正态分布。
tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
从截断的正态分布中输出随机值,和tf.random_normal()一样,但是所有数字都不超过两个标准差
import tensorflow as tf
a = tf.truncated_normal((3,4), mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
with tf.Session() as sess:
print(a)
print(sess.run(a))
tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
从正态分布中输出随机值,由随机正态分布的数字组成的矩阵
import tensorflow as tf
a = tf.random_normal((5,2), mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
with tf.Session() as sess:
print(a)
print(sess.run(a))
其它特殊的创建张量op
tf.Variable
tf.Variable(initializer,name),参数initializer是初始化参数,name是可自定义的变量名称,用法如下:
import tensorflow as tf
v1=tf.Variable(tf.random_normal(shape=[4,3],mean=0,stddev=1),name='v1')
v2=tf.Variable(tf.constant(2),name='v2')
v3=tf.Variable(tf.ones([4,3]),name='v3')
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(v1))
print(sess.run(v2))
print(sess.run(v3))
tf.placeholder
tf.placeholder(dtype, shape=None, name=None)
placeholder,占位符,在tensorflow中类似于函数参数,运行时必须传入值。
- dtype:数据类型。常用的是tf.float32,tf.float64等数值类型。
- shape:数据形状。默认是None,就是一维值,也可以是多维,比如[2,3], [None, 3]表示列是3,行不定。
- name:名称。
import tensorflow as tf
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = tf.multiply(input1, input2)
with tf.Session() as sess:
print(sess.run(output, feed_dict={input1: [3.], input2: [4.]}))
上一篇: vagrant使用记录