Keras
を使用したモデルについて。
わからないこと
以下のような形の異なるinput1
とinput2
をインプットとしてmodel.train_on_batch([input1, input2], label)
した場合、
どのような形となってニューラルネットワークにインプットされているのでしょうか。
input1
のshape
は(4, 4)
input2
のshape
は(4, )
色々調べましたが、通常、複数のインプットレイヤーを定義した場合、
keras.layers.Concatenate
keras.layers.Add
等を用いて、レイヤーをマージするとありましたが、今回のケースではそういった記述も見当たらず。
この動画(Githubコードはここ)を観ながら強化学習アルゴリズムを学習しており、上記の部分が分からなくなりました。
以下コードは、わかりやすいように オリジナルから一部修正して抜粋しました。
import tensorflow as tf from tensorflow.keras import layers, models, optimizers from tensorflow.keras import backend as K import numpy as np input = tf.keras.Input(shape=(4, )) advantages = tf.keras.Input(shape=[1]) dense1 = layers.Dense(32, activation='relu')(input) dense2 = layers.Dense(32, activation='relu')(dense1) output = layers.Dense(2, activation='softmax')(dense2) model = tf.keras.Model(inputs=[input, advantages], outputs=[output]) # ********************************* input1 = np.array( [[ 4.52281174e-02, 4.31672811e-02, -4.57789579e-02, 4.35560472e-02], [ 4.60914630e-02, -1.51269339e-01, -4.49078369e-02, 3.21451106e-01], [ 4.30660763e-02, 4.44624011e-02, -3.84788148e-02, 1.49510297e-02], [ 4.39553243e-02, -1.50087194e-01, -3.81797942e-02, 2.95249428e-01]] ) input2 = np.array( [ 1.60063125, 1.47153674, 1.34113826, 1.20942261] ) label = np.array( [[1, 0], [0, 1], [1, 0], [0, 1]] ) model.compile(optimizer=optimizers.Adam(lr=0.0005), loss="binary_crossentropy") model.train_on_batch([input1, input2], label)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/22 11:52
2021/02/22 22:53