2017-07-12 2 views
0

初心者ケラス:Keras:構文の明確化

ケラスで使われている構文を理解しようとしています。 私が理解しづらい文法はネットワークを構築することです。私は以下のコードでも説明されているように、いくつかの場所で見てきました。

ステートメントのような:current_layer = SOME_CODE(current_layer)
このようなステートメントの意味はなんですか?まず、現在のレイヤーに記載されている計算には、SOME_CODEに記載されている計算を実行することを意味していますか?

このような構文の使用法は何ですか?利点と選択肢は何ですか?

input_layer = keras.layers.Input(
     (IMAGE_BORDER_LENGTH, IMAGE_BORDER_LENGTH, NB_CHANNELS)) 

current_layer = image_mirror_left_right(input_layer) 

current_layer = keras.layers.convolutional.Conv2D(
     filters=16, "some values " ]) 
     )(current_layer) 

def random_image_mirror_left_right(input_layer): 
    return keras.layers.core.Lambda(function=lambda batch_imgs: tf.map_fn(
     lambda img: tf.image.random_flip_left_right(img), batch_imgs 
    ) 
    )(input_layer) 
+0

あなたはこのような使用法を見た場所を共有できますか?私に不思議そうだ... – desertnaut

+0

このレポのような:https://github.com/guillaume-chevalier/Hyperopt-Keras-CNN-CIFAR-100 –

答えて

1

もしあなたが本当にケラスの初心者であれば、私はこの段階でまだこのような高度なものを気にしないことを強く勧めます。

あなたが言及しているレポは、Kerasモデルを自動的にメタ最適化するための特別なライブラリ(HyperOpt)を使用するかなり進歩した非常に単純なケースです。それはcurrent_layer=SOME_CODE(current_layer)

...すでにPythonの辞書に保存されているいくつかの構成パラメータに応じて「自動」モデルの建物は...

また、あなたが引用機能がTensorFlow方法とlambda機能に関与するKerasを超えて含まKeras Functional APIの典型的な例です。私の経験によれば、より簡単Sequential API未満広く使用されているが、それは例えば、いくつかのより高度な例に便利来るかもしれない:

Keras機能APIは、複雑なモデルを定義するための進むべき道は、 です多出力モデル、有向非循環グラフ、または 共有レイヤーなどのモデルを使用できます。 [...]機能的APIでは、 訓練されたモデルを再利用するのが簡単です。どのモデルもレイヤーであるかのように扱うことができます。 テンソルで呼びます。モデルを呼び出すことによって、モデルのアーキテクチャを再利用するだけでなく、 ウェイトも再利用することに注意してください。