标签:... gather nd tf params indices scatter
tf.gather和gather_nd从params中收集数值,tf.scatter_nd 和 tf.scatter_nd_update用updates更新某一张量。严格上说,tf.gather_nd和tf.scatter_nd_update互为逆操作。
1. 已知数值的位置,从张量中提取数值:tf.gather, tf.gather_nd
tf.gather indices每个元素(标量)是params某个axis的索引,tf.gather_nd 中indices最后一个阶对应于索引值。
tf.gather函数
函数原型
1 gather( 2 params, 3 indices, 4 validate_indices=None, 5 name=None, 6 axis=0 7 )
参数:
params是要查找的张量,indices是要查找值的索引(int32或int64),axis是查找轴,name是操作名。
如果indices是标量,$output[a_0,...,a_n,b_0,...,b_n] = params[a_0,...a_n,indices,b_0,...,b_n]$
如果indices是向量,$output[a_0,...,a_n,i,b_0,...,b_n] = params[a_0,...a_n,indices[i],b_0,...,b_n]$
如果indices是高阶张量,$output[a_0,...,a_n,i,...,j,b_0,...,b_n] = params[a_0,...a_n,indices[i,...,j],b_0,...,b_n]$
返回值:
该函数返回值类型与params相同,具体值是从params中收集过来的,形状为$params.shape[:axis]+indices.shape+params.shape[axis+1:]$
tf.gather_nd函数
函数原型
1 gather_nd( 2 params, 3 indices, 4 name=None 5 )
indices是K阶张量,包含K-1阶的索引值。它最后一阶是索引,最后一阶维度必须小于等于params的秩。indices最后一阶的维数等于params的秩时,我们得到params的某些元素;indices最后一阶的维数小于params的秩时,我们得到params的切片。例如$output[i_0,...,i_{K-2}]=params[indices[i_0,...i_{K-2}]]$。输出张量的形状由indices的K-1阶和params索引到的形状拼接而成,形状为$indices.shape[:-1]+params.shape[indices.shape[-1]:]$。
参数:
params:被收集的张量。
indices:索引张量。必须是以下类型之一:int32,int64。
name:操作的名称(可选)。
返回值:
该函数返回一个张量.与params具有相同的类型。张量值从indices所给定的索引中收集,并且具有这样的形状:$indices.shape[:-1]+params.shape[indices.shape[-1]:]$
2. 已知赋值的位置,向张量赋值:tf.scatter_nd, tf.scatter_nd_update
参考:https://www.zhangshengrong.com/p/nDa9j05yNj/
标签:...,gather,nd,tf,params,indices,scatter 来源: https://www.cnblogs.com/avril/p/14257275.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。