TensorFlow2.0学习笔记1.1:张量(Tensor)生成和函数基础讲解一

张量(Tensor)生成

在这里插入图片描述0阶张量叫做标量,表示的是一个单独的数,比如s=123
1阶张量叫做向量,表示的是是一个一维数组,比如列表v=[1, 2, 3]
2阶张量叫做矩阵,表示的是一个二维数组,它可以有i行j列个元素,每个元素用它的行号和列号共同索引到。比如 矩阵中,元素2的索引就是矩阵m的第0行第1列

判断张量是几阶的,就看有几个’['方括号。0个是0阶,1个是1阶,2个是2阶,n个是n阶
所以张量可以表示1阶到n阶的数组
在这里插入图片描述
Tensorflow的数据类型有32位整形、32位浮点、64位浮点、布尔型、字符串型等等

在这里插入图片描述我们可以使用constant()创建一个张量,第一个参数指定张量的内容,第二个参数指定张量的数据类型
代码示例:

import tensorflow as tf

a = tf.constant([1, 5], dtype=tf.int64)#创建一个一阶张量,里面有两个元素1 5
#指定数据类型是64位整形 并赋值给a
print("a:", a)#打印出a
print("a.dtype:", a.dtype)#打印出a的数据类型
print("a.shape:", a.shape)#打印出a的形状

# 本机默认 tf.int32  可去掉dtype试一下 查看默认值

结果分析:
在这里插入图片描述
打印a会输出张量的所有信息,包括张量的内容、张量的形状、张量的数据类型
张量的形状看 shape的逗号隔开了几个数字,隔开几个数字,就代表这个张量是几维的。
在这个例子中,shape括号中用括号隔开了一个数字,说明是一维张量,这个数字是2,说明这个张量里有两个元素,也就是数值1和数值5
在这里插入图片描述很多时候数据是由numpy格式给出的,我们可以使用convert_to_tensor()把它变成Tensor格式

import tensorflow as tf
import numpy as np

a = np.arange(0, 5)
b = tf.convert_to_tensor(a, dtype=tf.int64)
print("a:", a)
print("b:", b)

比如:
b = tf.convert_to_tensor(a, dtype=tf.int64)
这条语句就把numpy格式a变成了Tensor格式b

在这里插入图片描述同样我们可以用zeros()创建全为0的张量,用ones()创建全为1的张量,用fill()创建全为指定的张量

import tensorflow as tf

a = tf.zeros([2, 3])
b = tf.ones(4)
c = tf.fill([2, 2], 9)
print("a:", a)
print("b:", b)
print("c:", c)

运行结果:
在这里插入图片描述
tf.zeros([2, 3])创建了一个二维张量,第一个维度有两个元素,第二个维度有三个元素,即2行乘3列。元素的内容全是0
tf.ones(4)创建了一个一维张量,里面有4个元素,内容全是1
tf.fill([2, 2], 9)创建了一个两行两列的二维张量,第一个维度有两个元素,第二个维度也有两个元素,内容都是9

维度可以这样记:
在这里插入图片描述
在编写代码时,我们常常随机生成初始化参数,要符合正态分布,tf.random.normal()函数生成指定维度的符合正态分布的张量
在这里插入图片描述有时候我们希望生成的随机数更集中一些,所以可以使用
tf.random.truncated_normal()函数。
在这里插入图片描述
代码示例:

import tensorflow as tf

d = tf.random.normal([2, 2], mean=0.5, stddev=1)
print("d:", d)
e = tf.random.truncated_normal([2, 2], mean=0.5, stddev=1)
print("e:", e)

在这里插入图片描述

比如
用tf.random.normal()生成两行两列的张量,里面的元素符合以0.5为均值 ,1为标准差的分布
用tf.random.truncated_normal()生成两行两列的张量,里面的元素符合以0.5为均值 ,1为标准差的随机数,而且这些元素都在均值加减两倍标准差之内分布,数据更向均值0.5集中

在这里插入图片描述可以用tf.random.uniform()生成指定维度的均匀分布随机数,用minval给定随机数的最小值,用maxval给定随机数的最大值。
最小最大是前闭后开区间
比如:tf.random.uniform([2, 2], minval=0, maxval=1)
生成了两行两列的张量,其中的每个元素都符合在0和1之间的平均分布

扫描二维码关注公众号,回复: 12236567 查看本文章

猜你喜欢

转载自blog.csdn.net/weixin_44145452/article/details/112915859