Tensor--tensorflow的数据类型
在tensorflow2.0版本之前,1.x版本的tensorflow的基本数据类型有计算图(Computation Graph)和张量(Tensor)两种,但tensorflow2.0之后的版本取消了Graph和Session的概念。今天简单记录一下Tensor的相关内容。
从Tensorflow的命名就不难看出,Tensor(张量)在整个tensorflow的框架体系中都是一个重要的概念,它可以称为Tensorflow的数据模型,因为Tensor是tensorflow管理数据的形式,换句话说,在tensorflow中,所有的数据都可以借助张量的形式来表示。在张量出现之前,我们比较熟悉这样两种数据类型:list和np.array。list就不多说了,对于大量数据list的表现并不是很好,假设有一个维度[64,24,24,3]的数据,它在深度学习中其实是一个比较小的数据,但是对于list来说却是一个很庞大的数据,占用的内存空间更是无法估量。而为了解决大数据的吞吐,对于相同类型的数据载体,np.numpy有很好的表现,但是numpy是在tensorflow之前出现的一个科学计算库,对GPU并不支持,也不支持自动求导,为了更好的解决深度学习中的问题,tensorflow开始出现。
在数学中,一个0维的数据(dim=0),即1.1,2.2等等被称为一个标量(scalar),一个一维的数据(dim=1),即[1.1],[2.2,3.3,……]等被称作向量(vector),一个维度大于2的数据,如[[1,2],[3,4]]被称为矩阵(matrix),而Tensor一般是指维度大于2的向量(矩阵),但是在tensorflow中,以上所有的类型都可以被称为tensor。
创建不同类型的数据:
# int型
a = tf.constant(1)
# float型
b = tf.constant(1.)
# double型
c = tf.constant(2.,dtype=tf.float64)
# bool型
d = tf.constant([True,False])
# string型
e = tf.constant('hello world')
得到结果如下:
常用属性如下:
# 使用numpy声明一个数据
a=np.arange(5)
# 将其转化为tensor
aa=tf.convert_to_tensor(a)
# 强制类型转换 int——float
bb=tf.cast(aa,dtype=tf.float32)
# .numpy()将tensor返回numpy显示数据
print(aa.numpy())
得到
如何创建一个tensor:
# 通过numpy创建数据转换
a = tf.convert_to_tensor(np.ones([2,3]))
# list转换
b = tf.convert_to_tensor([1,2])
# 初始化全为0的tensor(tf.ones()用法同tf.zeros())
c = tf.zeros([2,2])
# 以指定tensor的shape为基础创建新的tensor(同tf.zeros(c.shape))
d = tf.zeros_like(c)
# 填充任意元素
e = tf.fill([2,2],9)
# 随机化初始化:
# 正态分布,mean指定均值,stddev指定方差
f = tf.random.normal([2,2],mean=1,stddev=1)
# 截断正态分布
g = tf.random.truncated_normal([2,2],mean=1,stddev=1)
# 均匀分布
h = tf.random.uniform([2,2],minval=0,maxval=1)
捎带提一点打乱顺序函数的用法:
# 随机打散
i = tf.range(10)
i = tf.random.shuffle(i)
x = tf.random.uniform([10],maxval=10,dtype=tf.int32)
y = tf.random.uniform([10],maxval=10,dtype=tf.int32)
print(i.numpy())
print("x:",x.numpy())
print("y:",y.numpy())
# .gather指定按照某一索引序列取值
x = tf.gather(x,i)
y = tf.gather(y,i)
print("x:",x.numpy())
print("y:",y.numpy())
可以看到按照同一打乱序列取值后,x和y仍然是一一对应的关系
tensor中scalar最常用的部分:loss和accuracy
损失(loss)和精度(accuracy)在前面回归和mnist实战都已经提过,这里不再解释其概念,简单说明一下loss的求值方法
# 生成一组数据用来模拟四张图片的网络输出
out = tf.random.uniform([4,10])
print(out)
# 模拟四张图片对应的label
y = tf.range(4)
print(y)
# 使用one_hot对label进行编码
y = tf.one_hot(y,depth=10)
print(y)
# 调用keras的api来计算损失(MSE均方误差)
loss = tf.keras.losses.mse(y,out)
print(loss)
# 求loss的均值
loss = tf.reduce_mean(loss)
print(loss)
Tensor--tensorflow的数据类型的更多相关文章
- tensorflow基础-数据类型
一:tensorflow中的计算定义和执行 首先,对于tensorflow来说,最重要的概念就是图(Graph)和会话(Session),tensorflow的计算思想是:以图的形式来表示模型,表示和 ...
- TensorFlow使用基础-Tensor
使用 TensorFlow 之前你需要了解关于 TensorFlow 的以下基础知识 :• 使用图 (graphs) 来表示计算 .• 在会话 ( Session ) 中执行图 .• 使用张量 (te ...
- TensorFlow中的Session、Graph、operation、tensor
TensorFlow中的Session.Graph.operation.tensor
- pytorch和tensorflow的爱恨情仇之基本数据类型
自己一直以来都是使用的pytorch,最近打算好好的看下tensorflow,新开一个系列:pytorch和tensorflow的爱恨情仇(相爱相杀...) 无论学习什么框架或者是什么编程语言,最基础 ...
- 学习笔记TF048:TensorFlow 系统架构、设计理念、编程模型、API、作用域、批标准化、神经元函数优化
系统架构.自底向上,设备层.网络层.数据操作层.图计算层.API层.应用层.核心层,设备层.网络层.数据操作层.图计算层.最下层是网络通信层和设备管理层.网络通信层包括gRPC(google Remo ...
- TensorFlow框架之Computational Graph详解
1. Getting Start 1.1 import TensorFlow应用程序需要引入编程架包,才能访问TensorFlow的类.方法和符号.如下所示的方法: import tensorflow ...
- TensorFlow框架(1)之Computational Graph详解
1. Getting Start 1.1 import TensorFlow应用程序需要引入编程架包,才能访问TensorFlow的类.方法和符号.如下所示的方法: import tensorflow ...
- TensorFlow 基础知识
参考资料: 深度学习笔记目录 向机器智能的TensorFlow实践 TensorFlow机器学习实战指南 Nick的博客 TensorFlow 采用数据流图进行数值计算.节点代表计算图中的数学操作,计 ...
- [译]与TensorFlow的第一次接触(三)之聚类
转自 [译]与TensorFlow的第一次接触(三)之聚类 2016.08.09 16:58* 字数 4316 阅读 7916评论 5喜欢 18 前一章节中介绍的线性回归是一种监督学习算法,我们使用数 ...
- 05基于python玩转人工智能最火框架之TensorFlow基础知识
从helloworld开始 mkdir mooc # 新建一个mooc文件夹 cd mooc mkdir 1.helloworld # 新建一个helloworld文件夹 cd 1.helloworl ...
随机推荐
- HYSBZ_1588_set
http://www.lydsy.com/JudgeOnline/problem.php?id=1588 直接set做就好了,注意set的迭代器只能--之类的操作. OJ崩了,也不知道对错. #inc ...
- CCF_ 201403-2_窗口
用deque模拟. #include<iostream> #include<cstdio> #include<deque> using namespace std; ...
- AI产品经理工作流程——需求分析和产品设计
1.AI产品设计常见失败原因 技术驱动产品设计,即我有什么技术就做什么产品.尽管许多公司不惜重金招聘高级AI算法工程师,确实这样也能帮助企业拿到大量的融资,但也容易给公司带来技术决定产品设计的局限.然 ...
- 配置 Docker 加速器
Linux curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io ...
- spring中获取bean的方式
获取bean的方式 1.可以通过上下文的getBean方法 2.可以通过@Autowired注入 定义controller @RestController @RequestMapping(" ...
- 【Bullet引擎】刚体类 —— btRigidBody
btRigidBody类主要用于刚体数据的计算. 在模拟刚体动画过程中,可以使用btRigidBody类获取所保存的刚体对象,进而控制刚体对象的旋转和位移.进行刚体模拟计算需要经常用到此类. API: ...
- DOM - Document Object Model
Document Object Model
- ospf路由协议源码学习
目前,主要有两个版本的源码实现,一是quagga,一是bird. quagga的代码大概有3-4万行,有提到unnumbered interface, bird的代码大概1万行,但没有提到unnumb ...
- 2Nginx+keepalive+2tomcat 故障转移
根据真实生产环境 总结. 硬件:共计2台Linux服务器 76和77 每台服务器都安装 Nginx Keepalive Tomcat80作为虚拟ip,负责对外连接. 78和79是两台mys ...
- 杭电-------2052Picture(C语言)
#include<stdio.h> int main() { int width, height; int i, j; while (~scanf("%d %d", & ...