2017-06-29 26 views
0

のmax-プーリング、平均プーリングを含むkerasのlibに、既存の機能などフラクショナルMAX-プールkeras

しかし、私は紙https://arxiv.org/abs/1412.6071に基づいkerasに端数MAX-プーリングを実装したいと思います。

私の実装は以下の通りです:

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(..............)) 

可能でしょうか? 私は現在テンソルフローのバックエンドとしてケラスを使用しています。

誰かがアルゴリズム/コードを提供するかどうか鑑賞してください。

これまで私はカスタムレイヤーを書いていなかったので、これはとても新しくなりました。ありがとう!私の意見で

+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のGithubからthis discussionを確認してください。

+0

アドバイスをいただきありがとうございます!私が新しくなったので、コードで何が起こっているのかを親切に説明してください。ありがとう – Jacob

+0

私は目的のためにカスタムレイヤーを作成する必要があることを意味します。カスタムレイヤーはレイヤークラスから拡張されています。あなたの層のいくつかの重要なメソッドは次の通りです。 - ビルド:必要に応じて学習可能な変数を作成します。 - 呼び出し:計算を実行して出力を取得します。 - compute_output_shape:出力シェイプを返します(レイヤを通過した後のデータの形状は何ですか)。 –

+0

申し訳ありません。ありがとう兄貴 – Jacob