2017-11-30 14 views
0

私はカスタムレイヤーを持っています。それにはウェイトはありません。 最初のステップでは、Kersの入力テンソルを操作する関数を実装しようとしました。しかし、私は多くの理由から成功しなかった。私の2番目のアプローチはnumpy操作で関数を実装することでした。私が実装しているカスタムレイヤーには、バックプロパゲーションを必要としないので、numpyオペレーションを使用できると私は理解していました。体重はありません、そうですか?だから、主なアイデアは、テンソルを取るカスタム層を、実装の配列をnumpyのためにそれらを変換し、numpyのでそれらを操作することであるカスタムレイヤのKeras Tensortypeからnumpyアレイへの切り替え方法は?

Keras.backend.variable(value = output) 

:そして、私はちょうどでテンソルに私の層の出力を変換します出力をテンソルに変換します。 問題は、私のレイヤの入力テンソルをnumpy配列に変換してnumpyの操作で操作できるようにするために.eval()を使用できないように思えることです。

誰でもこの問題を回避する方法を教えていただけますか?

+1

このレイヤーの前に訓練可能なレイヤーがない場合を除き、バックプロパゲーションが必要です。 –

答えて

0

DanielMöllerのコメントで述べたように、Kerasはからのレイヤーをバックプロパゲーションして、前のレイヤーの勾配を計算できるようにする必要があります。このため、レイヤーを識別可能にする必要があります。

Keras操作は、autogradで自動的に区別できるので、同じ理由からKeras操作しか使用できません。レイヤーがシンプルな場合は、カスタムレイヤーをすぐに実装できるLambda layerをご覧ください。

Kerasバックエンド関数は、多くのユースケースをカバーする必要があります。そのため、Kerasバックエンド関数を使用してレイヤーを書き留めるのであれば、ここに別の質問を投稿してください。

これが役に立ちます。

+0

ありがとうございます!前のレイヤーは確かに訓練可能です。しかし、私のレイヤーはスコアとボックスを取り、最高のN個のボックスのスコアに従って生成します。 Kerasはまだそれを伝播する必要がありますか? – Tassou

+0

はい、常にそれをバックプロパゲーションする必要があります。実装に関するヘルプが必要な場合は、別の質問を投稿して、あなたがすでに持っているものを示してください。 – Coolness

+0

新しい質問と私の仕事はここにありますhttps://stackoverflow.com/questions/47583221/switching-from-numpy-operations-to-backend-functions-with-keras-gone-wrong – Tassou

関連する問題