TensorFlow创建常量(tf.constant)详解
在TensorFlow API中创建常量的函数原型如下所示:
tf.constant(value,dtype=None,shape=None,name='Const',verify_shape=False
)
可以看到第一个值value是必须的,可以是一个数值,也可以是一个列表。
如果是数值:
tensor=tf.constant(1)
为查看结果必须创建一个会话,并用取值函数eval()来查看创建的tensor的值:
sess=tf.Session()
with sess.as_default():print('结果是:', tensor.eval())
结果是:1
而如果value是一个列表:
tensor=tf.constant([1, 2])
sess=tf.Session()
with sess.as_default():print('结果是:', tensor.eval())
结果是:[1 2]
后面四个参数可写可不写,第二个参数表示数据类型,一般可以是tf.float32, tf.float64等:
tensor=tf.constant([1, 2], dtype=tf.float32)
sess=tf.Session()
with sess.as_default():print('结果是:', tensor.eval())
结果是: [1. 2.]
注意到数据类型相比之前发生了改变,因为这次我们指定了数据类型为float32,所以不是1 2,而是1. 2.。
第三个参数表示张量的“形状”,即维数以及每一维的大小。如果指定了第三个参数,当第一个参数value是数字时,张量的所有元素都会用该数字填充:
tensor=tf.constant(-1, shape=[2, 3])
sess=tf.Session()
with sess.as_default():print('结果是:', tensor.eval())
结果是: [[-1 -1 -1][-1 -1 -1]]
可以看到是一个二维张量,第一维大小为2, 第二维大小为3,全用数字-1填充。
而当第一个参数value是一个列表时,注意列表的长度必须小于等于第三个参数shape的大小(即各维大小的乘积),否则会报错:
tensor=tf.constant([1, 2, 3, 4, 5, 6, 7], shape=[2, 3])
Traceback (most recent call last):File "<pyshell#68>", line 1, in <module>tensor=tf.constant([1, 2, 3, 4, 5, 6, 7], shape=[2, 3])
ValueError: Too many elements provided. Needed at most 6, but received 7
这是因为函数会生成一个shape大小的张量,然后用value这个列表中的值一一填充shape中的元素。这里列表大小为7,而shape大小为2*3=6,无法正确填充,所以发生了错误。
而如果列表大小小于shape大小,则会用列表的最后一项元素填充剩余的张量元素:
tensor=tf.constant([1, 2], shape=[1, 4, 3])
sess=tf.Session()
with sess.as_default():print('结果是:', tensor.eval())
结果是: [[[1 2 2][2 2 2][2 2 2][2 2 2]]]
第四个参数name可以是任何内容,主要是字符串就行。
不输入任何内容时:
tensor=tf.constant([1, 2])
print(tensor)
Tensor("Const_16:0", shape=(2,), dtype=int32)
作为对比:
tensor=tf.constant([1, 2], name="jiayu")
print(tensor)
Tensor("jiayu_1:0", shape=(2,), dtype=int32)
第五个参数verify_shape默认为False,如果修改为True的话表示检查value的形状与shape是否相符,如果不符会报错。
tensor=tf.constant([[1, 2, 3], [4, 5, 6]], shape=[2, 3], verify_shape=True)
以上代码value与shape都是两行三列,检查结果正确。而下面的代码会报错:
tensor=tf.constant([1, 2], shape=[3, 2], verify_shape=True)
TensorFlow创建常量(tf.constant)详解相关推荐
- Win10 TensorFlow(gpu)安装详解
Win10 TensorFlow(gpu)安装详解 写在前面:TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着 ...
- TensorFlow Wide And Deep 模型详解与应用 TensorFlow Wide-And-Deep 阅读344 作者简介:汪剑,现在在出门问问负责推荐与个性化。曾在微软雅虎工作,
TensorFlow Wide And Deep 模型详解与应用 TensorFlow Wide-And-Deep 阅读344 作者简介:汪剑,现在在出门问问负责推荐与个性化.曾在微软雅虎工作,从事 ...
- Tensorflow 2.x源码详解之开宗明义:基本介绍和张量(万文多图)
大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...
- Tensorflow 2.x源码详解之第三章:导数(梯度/GradientTape)
大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...
- 创建emp表 oracle,Oracle中创建和管理表详解
Oracle中创建和管理表详解 更新时间:2013年08月01日 15:44:16 作者: 以下是对Oracle中的创建和管理表进行了详细的分析介绍,需要的朋友可以过来参考下 SQL> /* ...
- python动态生成数据库表_Python-Flask:动态创建表的示例详解
今天小编从项目的实际出发,由于项目某一个表的数据达到好几十万条,此时数据的增删查改会很慢:为了增加提高访问的速度,我们引入动态创建表. 代码如下: from app_factory import ap ...
- 转 常量指针和指针常量的区别详解
传送门 常量指针和指针常量的区别详解 在C/C++中关键字const用来定义一个只读的变量或者对象,有如下优点 (1)便于类型检查,如函数的函数 fun(const int a) a的值不允许 ...
- 在linux系统中创建文件夹,Linux系统中创建文件夹命令详解
Linux系统中创建一个新的文件夹我们可以使用命令来执行,下面由学习啦小编为大家整理了Linux系统中创建文件夹命令详解,希望对大家有帮助! Linux系统中创建文件夹命令详解 一.mkdir命令使用 ...
- mysql创建存储过程及函数详解
文章来源: 学习通http://www.bdgxy.com/ 目录 1. 存储过程 1.1. 基本语法 1.2 创建一个指定执行权限的存储过程 1.3?DELIMITER 的使用 2. 创建函数? 1 ...
最新文章
- Jakarta Commons:巧用类和组件1
- Mybatis(三) 映射文件详解
- 一个9年的技术最近一直担心找不到工作
- mysql 慢查询 不重启_开启mysql慢查询日志,不重启数据库的方法
- Spring boot(十二):Spring boot 如何测试、打包、部署
- rxjava背压怎样使用_使用MicroProfile应用隔板和背压
- mysql牵引例子_MySQL学习06(事务和索引)
- php案例分析百度云_百度阅读|助力推动阅读领域无障碍优化(二)
- 手机自动化测试:Appium源码分析之跟踪代码分析四 5
- 写一个案例,搞得不要不要的。尴尬了。
- docker 离线安装_企业级Docker私库Harbor安装详解
- flex右对齐_移动WEB开发 — Flex布局
- 数据库学习笔记【自学教程】—— 如何建立数据库
- 基于 Flink 的 PB 级数据即席查询实践
- 各大IT公司、软件公司员工等级(级别)及薪资
- 纵横算法之三:算法到底考什么
- 【Linux 】内核签名(签名内核模块)、linux 驱动签名、安装特定版本的 kernel-devel...
- 2020年12月编程语言排行榜
- python简单温度转换,python编写的简单温度转换程序
- 计算机分级时无法度量视频播放,无法度量视频播放性能怎么办-无法度量视频播放性能的解决方法 - 河东软件园...