我想编写一个 Keras 层(带有 TF 后端)来反转输入张量的元素 1、5 和 9 的符号。[为了您的好奇心:网络处理 (pT,eta,phi,M) 表示中的四动量。我想翻转伪快速组件的符号]。天真地,我会做这样的事情:def flip_eta( x ): # you can't do this with tensors x[1] = -x[1] x[5] = -x[5] x[9] = -x[9] return x但是,它不起作用,我收到以下错误: x[1] = -x[1]TypeError: 'Tensor' object does not support item assignment 我对 TF 操作不是很熟悉。有没有一种简单的方法来应用这样的转换?
2 回答
互换的青春
TA贡献1797条经验 获得超6个赞
导入后端 (TensorFlow)
from keras import backend as K
定义您的输入数组
val = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
将其转换为变量
kvar = K.variable(value=val, dtype='float64', name='example_var')
定义所需的掩码并将其转换为变量:
mask = np.ones([len(val)])
mask[[1,5,9]] = -1
mask = K.variable(value=mask, dtype='float64', name='mask')
将掩码乘以您的原始向量
result = val * mask
评估结果
K.eval(result)
> array([ 0., -1., 2., 3., 4., -5., 6., 7., 8., -9., 10.])
添加回答
举报
0/150
提交
取消