機械学習、強化学習の調査録

機械学習関連のことをまとめていきます。強化学習関連が多いかもしれません

【Keras】Kerasで中間層を分割するモデルの作成

今回はKerasで中間の層を分割するモデルの作成方法についてお話します。

目標としては下の図のようにすることです。

f:id:ttt242242:20190718052519j:plain

元のモデル

まずは元のモデルを作成します。

gist93bd075c5ebff1f11aa7450359f4bf0f

f:id:ttt242242:20190718052539p:plain

中間層を分割したモデル

Keras のLambdaを用いて構成します。

keras,divide middle layer

上記のコードによって、以下のようなモデルになります。

f:id:ttt242242:20190718052553p:plain

7行目のLambdaについて少し説明します。

x1_1 = Lambda(lambda x:x[:,:5],output_shape=(5,))(inputs)

上記のLambdaではinputs層のoutputを引数xとしています。
そして、lambdaの中でxの前半部分をx[:, :5]を入力として受け取っています。
ちなみに、x[:, :5]の前半の[:] はバッチ用ですので、必ずつけなければなりません。

参考文献

https://keras.io/getting-started/functional-api-guide/

https://qiita.com/Mco7777/items/158296ed7f66aed2ffc3