开发者学堂课程【深度学习框架 TensorFlow 入门:张量的属性与生成】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/773/detail/13542
张量的属性与生成
内容简介:
一、张量 (Tensor)
二、创建张量的指令
三、创建随机张量
一、张量
在编写 TensorFlow 程序时,程序传递和运算的主要目标是 f.Tensor
TensorFlow 的张量就是一个 n 维数组,类型为 tf.Tensor。
Tensor 具有以下两个重要的属性
type:数据类型
shape:形状(阶)
与 ndarray 很多地方相似,张量在 ndarray 中定义图的时候其实是一个 Tensor 对象,但在会话当中运行这个对象想要出现具体的值的时候,这个值的类型就是 ndarray。
(1) 张量的类型
(2)张量在计算机当中如何存储?
标量在计算机中为一个数字,可看成0阶张量
向量…… 一维数组[2, 3, 4] …… 1阶张量
矩阵…… 二维数组[[2, 3, 4]…… 2阶张量
[2, 3, 4]]
……………
张量n维数组 n阶张量
(3)张量的阶
形状有0阶、1阶、2阶……
代码如下
def tensor demo():
……
:return:
……
tensor1 = tf . constant(4.0)
tensor2 = tf. constant([1, 2, 3, 4])
linear_ squares = tf. constant([[4], (9], (16], (25]], dtype=tf. int32 )
print("tensor1:\n", tensor1)
print("tensor2:\n", tensor2)
print("linear_ squares:\n", linear_ squares)
return None
创建张量的时候,如果不指定类型默认 tf.float32,整型 tf. int32,浮点型 tf. float32
二、创建张量的指令
固定值张量
固定值张量
t1.zeros(shape, dtype= tf.float32, name=None)
创建所有元素设置为零的张量。此操作返回一个 dtype 具有形状shape和所有元素设置为零的类型的张量。
tf.zeros_like(tensor, dtypenNone, name=None)
给 tensor 定单张量(),此操作返回tensor与所有元素设置为零相同的类型和形状的张量。
tt.ones(shape, dtype=tf.float32, name=None)
创建一个所有元素设置为1的张量。此操作返回一个类型的张量,dtype 形 状 shape 和所有元素设置为1。
tf.ones_ like(tensor, dtype=None, name=None)
给tensor定单张量(),此操作返回tensor与所有元素设置为1相同的类型和形状的张量。
tf.fill(dims, value, name=None)
创建一个填充了标量值的张量。此操作创建一个张量的形状dims并填充它 value.
tf.constant(value, dtype=None, shape=None, name=’Const’)
创建一个常数张量。
.eval()查看具体值
随机值张量
三、创建随机张量
一般我们经常使用的随机数函数 Math.random() 产生的是服从均匀分布的随机数,能够模拟等概率出现的情况,例如扔一个骰子,1到6点的概率应该相等,但现实生活中更多的随机现象是符合正态分布的,例如20岁成年人的体重分布等。
假如我们在制作一个游戏,要随机设定许许多多NPC的身高,如果还用 Math.random()。
生成从140 到220之间的数字,就会发现每个身高段的人数是一样多的,这是比较无趣的,这样的世界也与我们习惯不同,现实应该是特别高和特别矮的都很少,处于中间的人数最多,这就要求随机图数符合正态分布。
t.truncated_ normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
从截断的正态分布中输出随机值,和 tf.random_normal() 一样,但是所有数字都不超过两个标准差
tf.random_ normal(shape, mean=0.0, stddev=1.0, dtyp=tf.loat32, seed=None, name=None)从正态分布中输出随机值,由随机正态分布的数字组成的矩阵
其它特殊的创建张量的 op
。tf.Variable
。tf.placeholder