我想写一个Keras层(使用TF后端)来反转输入张量的元素1,5和9的符号。出于您的好奇心: net处理(pT,eta,φ,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操作不是很熟悉。有没有一种简单的方法来应用这样的转换呢?
干杯,里卡多
发布于 2019-01-16 23:11:04
发布于 2019-01-16 23:21:01
导入后端(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.])https://stackoverflow.com/questions/54219939
复制相似问题