Keras metrics=[‘accuracy’]とは厳密にはどんな評価関数なのか

Kerasでディープラーニングの開発を進めていますが、よく

model = Sequential()
model.add(Dense(512, activation='relu', input_shape=(784,)))
model.add(Dropout(0.2))
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(10, activation='softmax'))

model.compile(loss='categorical_crossentropy',
              optimizer=RMSprop(),
              metrics=['accuracy'])

ってやってました。

しかし、ある時

metrics=['accuracy']

ってなんだ??という疑問にブチ当たりました。(´・ω・)

metrics=['acc']

も同様です。

 

Kerasの本家サイトによると

https://keras.io/ja/metrics/

accuracyって名前のmetricsないんですよね (;^ω^)

 

幸いなことに、下記のStack Overflowさんに答えがありましたー!

https://stackoverflow.com/questions/41531695/how-does-keras-define-accuracy-and-loss

デフォルトはcategorical_accuracyだそうです。

下記のKerasのソースコードを見ると、損失関数のタイプとか、出力のシェイプっぽいのを見て、binary_crossentropy にしてくれることもあるようです。

https://github.com/keras-team/keras/blob/d8b226f26b35348d934edb1213061993e7e5a1fa/keras/engine/training.py#L651

しかし!はっきりしていた方がいいですから、自分で指定しておいた方が私は好きですね~。

ちなみに、勉強している元ネタ本はこちら。

PythonとKerasによるディープラーニング

無駄にややこしい部分があるので、オススメ本ではありませんw

 

One Reply to “Keras metrics=[‘accuracy’]とは厳密にはどんな評価関数なのか”

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です