为了账号安全,请及时绑定邮箱和手机立即绑定

Keras 层仅将输入张量的符号更改为特定元素

Keras 层仅将输入张量的符号更改为特定元素

MYYA 2021-10-12 16:20:06
我想编写一个 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.])


查看完整回答
反对 回复 2021-10-12
  • 2 回答
  • 0 关注
  • 247 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信