2017-06-29 28 views
0

在keras LIB現有的功能,包括MAX-池,平均池等分數最高,集中在keras

不過,我想實現的分數最高,集中在基於紙張https://arxiv.org/abs/1412.6071 keras。

我的實現如下:

model = Sequential() 
...... 
model.add(Conv2D(32, (3, 3))) 
model.add(Activation('relu')) 
model.add(MaxPooling2D(pool_size=(2, 2))) 

所以,與其model.add(MaxPooling2D(pool_size =(2,2))),我想實現類似如下:

model.add(fractionalMaxpool2D(..............)) 

可能嗎? 我目前在張量流中使用keras作爲後端。

欣賞是否有人會提供算法/代碼。

我對此很新,因爲我之前沒有寫過任何自定義圖層,所以任何人都可以提供幫助嗎?謝謝!

+0

你需要更具體。你想讓人們爲你實現算法嗎? – Pablo

+0

是的!那樣就好了。好的,我將編輯帖子以更具體!謝謝 – Jacob

+0

您的問題已答覆[這裏](https://stackoverflow.com/questions/44991470/using-tensorflow-layers-in-keras)。 – cLottzen

回答

0

在我看來,你可以做到這一點通過實現自定義層

class FractionalMaxpool2D(Layer): 
    def __init__(self, output_dim): 
     super(FractionalMaxpool2D, self).__init__() 
     self.output_dim = output_dim 
    def build(self, input_shape): 
     # Create a trainable weight variable for this layer. 
     # This kind of layer doesn't have any variable 
     pass 
    def call(self, x): 
     # Handle you algorithm here 
     return .... 
    def compute_output_shape(self, input_shape): 
     # return the output shape 
     return (input_shape[0], self.output_dim) 

的問題是很難實現的,使用GPU分數最高池的核心功能。 請檢查Keras's Github的this discussion

+0

好的,謝謝你的建議!由於我對它很陌生,你會好好解釋一下代碼是怎麼回事?謝謝 – Jacob

+0

我的意思是你應該爲你的目的創建自定義層。自定義圖層是從Layer類擴展而來的。層中的一些重要方法是: - build:如果需要,則創建可訓練變量。 - call:執行您的計算以獲得輸出 - compute_output_shape:返回輸出形狀(數據在通過圖層後的形狀是什麼) –

+0

好的,我會嘗試。多謝兄弟 – Jacob