2017-08-02 139 views
1

如何在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. 

什麼是錯在我的代碼?

回答

1

我應該使用

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,:,:])