TensorFlow之张量创建
发布日期:2022-02-15 02:36:21 浏览次数:7 分类:技术文章

本文共 2161 字,大约阅读时间需要 7 分钟。

张量

tensorflow中的基本数据是tensor(张量),可以看作是多维数组或列表类型。

张量的创建

使用tf.constant()创建张量,tf.constant()的语法格式为:

tf.constant(value,dtype,shape)

value用来指定数据,dtype用来显式地声明数据类型,shape用来指定数据的形状,

例如,要生成一个两行三列全为类型int32的数字2的张量,可以使用以下代码:

import tensorflow as tfa = tf.constant(3,dtype=tf.int32,shape=(2,3))print(a)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lg5SzWSs-1590935229161)(./img/1.png)]

但是由于tensor中的整型数据默认是tf.int32的,dtype可以不用显式地指定。

tensorflow所生成的张量都可以用numpy方法转换成对应的数据,例:

import tensorflow as tfa = tf.constant(3,dtype=tf.int32,shape=(2,3))print(a)print(a.numpy())

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FZ7gh0kK-1590935229168)(./img/2.png)]

tensor的数据类型有:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XAFsmmfG-1590935229170)(./img/3.png)]

constant函数的value参数除了可以是数字外,还可以是numpy数组,例:

import numpy as npb=np.array([1,2,3])c=tf.constant(b)print(c)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vvgrnfl4-1590935229175)(./img/4.png)]

全0张量与全1张量的创建

使用tf.zerostf.ones函数进行创建。语法格式:

tf.zeros(shape,dtype = tf.float32)tf.ones(shape,dtype = tf.float32)

例:

b = tf.zeros(2)c = tf.ones([2, 3])print("b=", b)print("c=", c)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ZV34YwX-1590935229178)(./img/7.png)]

如果要指定维度大于2的张量,可以将行列数写进数组,如c = tf.ones([2, 3])表明创建两行三列的全一张量。

创建元素值都相同的张量

tf.fill()函数用于创建值都相同的张量,语法格式为:

tf.fill(dims,value)

tf.fill()函数没有dtype参数,它根据传递进的参数自动判断数据类型的。dims用于指定形状,例:

d = tf.fill(dims=[2,3],value=9)print("d=",d)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tphz9B6Y-1590935229180)(./img/8.png)]

创建随机数张量

正态分布

语法格式:

tf.random.normal(shape,mean,stddev,dtype)

mean意为均值,stddev为标准差,

例,创建2X2的正态分布随机数张量:

e = tf.random.normal([2, 2])print("e=",e)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7bWzL4Iw-1590935229181)(./img/9.png)]

截断正态分布

语法格式:

tf.random.truncated_normal(shape, mean, stddev,)

返回值是一个截断的正态分布,截断的标准是2倍的标准差。

创建均匀分布张量

语法格式:

tf.random.uniform(shape, minval, maxval, dtype)

minval表示最小值,maxval表示最大值,前闭后开,不包括最大值。

例:

f = tf.random.uniform(shape=[2, 3], minval=0, maxval=10)print("f=", f)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CnPPp3sB-1590935229182)(./img/10.png)]

随机打乱

tf.random.shuffle(x)函数意为随机打乱张量x的第一维,但其实它是可以打乱列表或者数组的,打乱后返回张量类型。

创建序列

tf.range()函数可以创建序列,用法与python中的range函数类似。语法格式:

tf.range(start, limit, delta=1, dtype)

startlimit分别表示起始数字与结束数字,前闭后开,delta表示步长。

改变张量数据类型

使用tf.cast可以改变张量的数据类型,语法格式为:

tf.cast(x,dtype)

例,将tf.int32改变成tf.float32类型

a = tf.constant(12,dtype=tf.int32,shape=(2,3))tf.cast(a,dtype=tf.float32)print(a)

tf.convert_to_tensor函数能将各种类型的Python对象转换为张量对象。它接受张量对象、数字数组、Python列表和Python标量。

a = [i for i in range(10)]print("a_type=",type(a))b = tf.convert_to_tensor(a)print(b)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VGGjifrd-1590935229184)(./img/6.png)]

tensor对象的属性

可以直接输出张量的ndim(维度)、shapedtype属性,例:

a = tf.constant(value=2, shape=(2, 3), dtype=tf.float32)print(a.ndim)print(a.dtype)print(a.shape)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DSD11Inw-1590935229185)(./img/11.png)]

也可以使用tensorflowsizerankshape函数来得到张量的长度、维度、形状属性。

print(tf.size(a))print(tf.shape(a))print(tf.rank(a))

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V8WYDLAK-1590935229188)(./img/12.png)]

转载地址:https://blog.csdn.net/PeZXO/article/details/106462816 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:TensorFlow2.x的安装
下一篇:tensorflow学习——张量的相关操作

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月01日 08时19分09秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

CentOs7命令行(静默)的方式安装oracle数据库 2019-04-27
基于VMware安装CentOs7的镜像 2019-04-27
PL/SQL数据库管理工具的使用 2019-04-27
带你玩转属于自己的spring-boot-starter系列(一) 2019-04-27
带你玩转属于自己自己的spring-boot-starter系列(二) 2019-04-27
带你玩转属于自己的spring-boot-starter系列(三) 2019-04-27
基于SnowFlake算法如何让分库分表中不同的ID落在同一个库的算法的实现 2019-04-27
基于springboot的ShardingSphere5.X的分库分表的解决方案之分库解决方案(二) 2019-04-27
基于springboot的ShardingSphere5.X的分库分表的解决方案之分表解决方案(一) 2019-04-27
基于springboot的ShardingSphere5.X的分库分表的解决方案之关联查询解决方案(三) 2019-04-27
基于springboot的ShardingSphere5.X的分库分表的解决方案之基于seata的分布式事务的解决方案(十五) 2019-04-27
Linux文件管理参考 2019-04-27
FTP文件管理项目(本地云)项目日报(一) 2019-04-27
FTP文件管理项目(本地云)项目日报(二) 2019-04-27
FTP文件管理项目(本地云)项目日报(三) 2019-04-27
FTP文件管理项目(本地云)项目日报(四) 2019-04-27
【C++】勉强能看的线程池详解 2019-04-27
FTP文件管理项目(本地云)项目日报(五) 2019-04-27
FTP文件管理项目(本地云)项目日报(关于不定长包的测试) 2019-04-27
FTP文件管理项目(本地云)项目日报(六) 2019-04-27