自作の活性化関数を作成したい
参考記事を参考にし
defで関数を作り、
Activation()で活性化関数として扱いたかったのですが
xの位置がおかしいとなってます。
Activationを使う場合入力に使うxは外に出して、(x)とすると考えていたのですが
何故かエラーに・・・
python
1#活性化関数作成 2 def palametric_softpluse(x, alpha): 3 return tf.math.log(alpha + tf.math.exp(alpha*x))
python
1#モデル作成 2def define_model(): 3 4 5 inputs = Input(shape=(32, 32, 3)) 6 x = Conv2D(64, (3, 3), padding='SAME')(inputs) 7 x = Activation(palametric_softpluse(alpha=10))(x) 8 x = Conv2D(64, (3, 3), padding='SAME')(x) 9 x = Activation(palametric_softpluse(alpha=10))(x) 10 x = Dropout(0.25)(x) 11 x = MaxPooling2D()(x) 12 13 x = Conv2D(128, (3,3), padding='SAME')(x) 14 x = Activation(palametric_softpluse(alpha=10))(x) 15 x = Conv2D(128, (3,3), padding='SAME')(x) 16 x = Activation(palametric_softpluse(alpha=10))(x) 17 x = Dropout(0.25)(x) 18 x = MaxPooling2D()(x) 19 20 x = Conv2D(256, (3,3), padding='SAME')(x) 21 x = palametric_softpluse(alpha=10)(x) 22 x = Conv2D(256, (3,3), padding='SAME')(x) 23 x = Activation(palametric_softpluse(alpha=10))(x) 24 x = GlobalAveragePooling2D()(x) 25 x = Dense(1024)(x) 26 x = Activation(palametric_softpluse(alpha=10))(x) 27 x = Dropout(0.25)(x) 28 y = Dense(10, activation='softmax')(x) 29 30 model = Model(inputs, y) 31 32 # モデルのコンパイル。 33 model.compile(optimizer=tf.keras.optimizers.Adam(), 34 loss='categorical_crossentropy', 35 metrics=['accuracy']) 36 model.summary() 37 return model 38 39model = define_model()
エラー文
palametric_softpluse() missing 1 required positional argument: 'x'
参考記事
https://teratail.com/questions/272051
仮の解決方法
作成した活性化関数の引数alphaにデフォルト値(alpha=10)を与えましたが、理想は層毎に引数を与えたいです。
python
1#活性化関数作成 2 def palametric_softpluse(x, alpha= 10): 3 return tf.math.log(alpha + tf.math.exp(alpha*x)) 4 5#モデル作成 6def define_model(): 7 inputs = Input(shape=(32, 32, 3)) 8 x = Conv2D(64, (3, 3), padding='SAME')(inputs) 9 x = Activation(palametric_softpluse)(x) 10 x = Conv2D(64, (3, 3), padding='SAME')(x) 11 x = Activation(palametric_softpluse)(x) 12 x = Dropout(0.25)(x) 13 x = MaxPooling2D()(x) 14 15 16 x = Conv2D(128, (3,3), padding='SAME')(x) 17 x = Activation(palametric_softpluse)(x) 18 x = Conv2D(128, (3,3), padding='SAME')(x) 19 x = Activation(palametric_softpluse)(x) 20 x = Dropout(0.25)(x) 21 x = MaxPooling2D()(x) 22 23 x = Conv2D(256, (3,3), padding='SAME')(x) 24 x = palametric_softpluse(x) 25 x = Conv2D(256, (3,3), padding='SAME')(x) 26 x = Activation(palametric_softpluse)(x) 27 x = GlobalAveragePooling2D()(x) 28 x = Dense(1024)(x) 29 x = Activation(palametric_softpluse)(x) 30 x = Dropout(0.25)(x) 31 y = Dense(10, activation='softmax')(x) 32 33 model = Model(inputs, y) 34 35 # モデルのコンパイル。 36 model.compile(optimizer=tf.keras.optimizers.Adam(), 37 loss='categorical_crossentropy', 38 metrics=['accuracy']) 39 model.summary() 40 return model 41 42model = define_model()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。