Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按常数因子缩放张量中的行集_Python_Tensorflow - Fatal编程技术网

Python 按常数因子缩放张量中的行集

Python 按常数因子缩放张量中的行集,python,tensorflow,Python,Tensorflow,TL;DR如何将张量的一部分缩放2(tf列表中的行索引) 详情: 索引行ID的索引:存储行ID的列表 Tensor(“挤压:0”,dtype=int64,device=/device:GPU:0) [1,4,5,6,12] emb\u inputs=tf.nn.embedding\u查找(embedding,self.all\u行) #带形状的张量(批量大小=4,全行长度,emb大小=128) 因此,对于每个self.all\u行,将评估emb\u输入 面临的问题/挑战:我需要将emb\u输入

TL;DR如何将张量的一部分缩放2(tf列表中的行索引)


详情:

索引行ID的索引
:存储行ID的列表
Tensor(“挤压:0”,dtype=int64,device=/device:GPU:0)
[1,4,5,6,12]

emb\u inputs=tf.nn.embedding\u查找(embedding,self.all\u行)
#带形状的张量(批量大小=4,全行长度,emb大小=128)

因此,对于每个
self.all\u行
,将评估
emb\u输入

面临的问题/挑战:我需要将
emb\u输入按
2.0
进行缩放,以缩放
索引中提到的每一行\u id
。 我尝试过各种拼接方法,但似乎没有找到一个好的解决方案。有人能建议吗?谢谢


注意:Tensorflow的初学者可以尝试以下方法:

SCALE = 2
emb_inputs = ...
indices_of_scaling_ids = ...
emb_shape = tf.shape(emb_inputs)
# Select indices in boolean array
r = tf.range(emb_shape[1])
mask = tf.reduce_any(tf.equal(r[:, tf.newaxis], indices_of_scaling_ids), axis=1)
# Tile the mask
mask = tf.tile(mask[tf.newaxis, :, tf.newaxis], (emb_shape[0], 1, emb_shape[2]))
# Choose scaled or not depending on indices
result = tf.where(mask, SCALE * emb_inputs, emb_inputs)

这是纯粹的美!非常感谢。给我几分钟试试,我试了几个小时才成功。你能评论一下如何用这个来修复这个错误吗?非常感谢!另外,元素在第二个索引编号列表上的三维矩阵缩放比通常更难,因为轴参数也不适用,掩蔽也更复杂out@VishalAnand我懂了,最初的代码对我有用,但可能这取决于TensorFlow的版本,它是否只支持在
tf.where
中为第一维度提供数组。我已经在代码中添加了一个平铺,看看它是否适合你。终于让它工作了!对答案进行了一次小的编辑(迭代第二个索引,第一个索引指的是批号)。再次感谢@维沙兰感谢你的修复,我误读了一些问题,很抱歉造成混乱。