Keras中的自定义图层:def call
问题描述:
如何在Keras中实现自定义图层? def call中的参数'x'是什么意思? (num,4,4)数组作为输入,并将每个片(每个num(4,4)输入数组)乘以(num,4,4)数组的相应片权重。所以我想要(num,1,1)输出。Keras中的自定义图层:def call
我尝试这样做:
def call(self, x, mask=None):
num = self.input_len
res=np.zeros((num,1,1))
for i in range(num):
print(x[i,:,:])
res[i,0,0]=K.dot(x[i,:,:], self.W[i,:,:])
return res
,但我有错误:
/home/universal/anaconda3/envs/practicecourse2/mylayer.py in call(self, x, mask)
26 for i in range(num):
27 print(x[i,:,:])
---> 28 res[i,0,0]=K.dot(x[i,:,:], self.W[i,:,:])
29 return res
30
ValueError: setting an array element with a sequence.
什么是错在我的代码?
答
我应该使用
res= K.sum(x*self.W,axis=(2,3))
,而不是
for i in range(num):
print(x[i,:,:])
res[i,0,0]=K.dot(x[i,:,:], self.W[i,:,:])