我正在实现一个keras层,其call
函数需要实现按索引分配的2D Tensor值。 python numpy演示了该功能,如下所示:
import numpy as np
A = np.arange(12).reshape(6,2)
ind_x = [2,4,5]
ind_y = [0,1,0]
A[(ind_x,ind_y)] = -1 # assign value
A = array([[ 0, 1],
[ 2, 3],
[-1, 5],
[ 6, 7],
[ 8, -1],
[-1, 11]])
如果A.shape = (6,2)
可用,那么tf.SparseTensor
就是完美的选择。
但是,在我的情况下,A是keras.layers.Layer的输入,因此在图形构建期间不确定其第一维(即批处理大小)。最后,A.shape = (None,2)
。还有其他的张量流功能可以实现吗?谢谢。
P.S。提出了完整的keras实现here的问题。但是,我认为这里的问题可能更清楚,更基础。