对于多维的稀疏数据,TensorFlow 支持 SparseTensor 表示。
官方文档地址:https://tensorflow.google.cn/api_guides/python/sparse_ops
构造稀疏张量
SparseTensor(indices, values, dense_shape)
indices是一个维度为(n, ndims)的2-D int64张量,指定非零元素的位置。比如indices=[[1,3], [2,4]]表示[1,3]和[2,4]位置的元素为非零元素。n表示非零元素的个数,ndims表示构造的稀疏张量的维数。
values是一个维度为(N)的1-D张量,对应indices所指位置的元素值。
dense_shape是一个维度为(ndims)的1-D张量,代表稀疏张量的维度。
tf.SparseTensor(indices=[[0, 0], [1, 2]], values=[1, 2], dense_shape=[3, 4]) [[1, 0, 0, 0] [0, 0, 2, 0] [0, 0, 0, 0]]
转换
将稀疏张量转为普通矩阵。
tf.sparse_to_dense( sparse_indices, output_shape, sparse_values, default_value=0, validate_indices=True, name=None )
sparse_indices是那些非零元素的位置。
sparse_indices是实数,该矩阵为一维矩阵,指定一维矩阵的某一个元素位置
sparse_indices是向量,该矩阵为一维矩阵,指定一维矩阵的多个元素
sparse_indices是二维矩阵,该矩阵为多维矩阵,指定多维矩阵的多个元素。
output_shape是矩阵的维度。
sparse_value是对应sparse_indices所指位置的元素值。
default_value是未指定元素的默认值,一般为0。
import tensorflow as tf mysparse_indices = tf.constant(5) mymatrix = tf.sparse_to_dense(mysparse_indices, [11], 10) with tf.Session() as sess: result = sess.run(mymatrix) print(result) //[0 0 0 0 0 10 0 0 0 0 0]
SparseTensor和SparseTensorValue
两者的参数相同。
在计算图中定义稀疏张量时,使用SparseTensor;在feed数据时使用SparseTensorValue。
补充知识:彻底搞懂tensorflow里的张量(tensor)
1.引言
学习卷积神经网络(CNN)的时候,最重要的就是搞清楚网络各层的神经元输入输出的数据结构(即张量)。如果仅用线性代数所学的矩阵,向量来理解张量,一定会搞得一头雾水。因此很有必要搞清楚张量是什么东西。
首先明确:张量最主要的两个参数: rank(阶,或维数)、shape(形状)
2.什么是张量
下图是张量的直观的示意:张量是标量、向量、矩阵的集合和推广。
3.什么是rank
可以发现:可以数括号[ ]的层数来确定张量的维数(阶)
什么是基本向量
基本向量(basis vector):几个basis vector就是从几个方面来描述一组数据。
举例说明:
一维张量:概念和向量完全一样。图中的白线就是一个向量,当然了,在三维空间向量有三个分向量(分别是x方向、y方向、z方向)
二维张量:对下面这个长方形施加一个力,怎么来描述?
我们把可以把这个长方形就xoy、xoz、yoz三个平面截下来,之后在每一个平面上再分析受力情况。
两个basis vector出来了:一个用来描述截面方向(这是一个三维向量);另一个用来描述此截面的受力情况(当然这也是一个三维向量)
那么我们可以用作用在yoz平面(此平面的法向量是x轴单位向量),受力的x轴分量用Pxx来表示,以此推广到含有9个元素的矩阵,这就是一个2维张量。
换句话来解释:在一个三维空间,我们从2个基本向量来描述一个东西,那么这个张量所含有的元素个数应该是3的2次方等于9个。每个元素能得到2个基本向量的注释。这就是一个2维的张量
三维张量:
继续推广,每个元素有三个基本向量注释。三维的张量形状就像是叠起来的矩阵。
最后品一品这句话
4.什么是shape
shape指明每一层有多少个元素。
比如[2,3,4]是指第一层2个元素,第二层3个元素,第三层4个元素,通过这个我们就可以知道这个张量一共有2 × 3 × 4=24 个元素。而且它有3层,因此可以知道这个张量的rank=3
注意:读取元素,从外括号往内括号读
下面这个代码也能说明问题。
import tensorflow as tf # 定义了一个张量,有6个元素,设置他的形状是[2.3] a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2,3]) with tf.Session() as session: print(session.run(a))
打印的结果是
[[1 2 3] [4 5 6]]
以上这篇浅谈TensorFlow之稀疏张量表示就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
TensorFlow,稀疏张量
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】