前提
Kerasを使用してmnistデータを動かしてみました。
ラベルデータの取り扱いについて疑問があります。
疑問な点
mnistのラベルデータには0〜9の数字が割り当てられているかと思います。下のようにコードを書いて実行したところ無事に学習が実行されました。疑問に感じているのはラベルデータに前処理を施していないのに学習が正常に実行されていることです。
下のコードでは出力層の活性化関数をソフトマックスに設定しているため、それぞれのラベルの確率が返ってくると思います。
*[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.0, 0.2]のように。
そのためラベルデータもあらかじめワンホットエンコーディングが必要なのではないかと考えます。なぜ0〜9で表現される元のデータのままで学習がうまくいくのでしょうか?Keras側が自動で判定してくれているのでしょうか?
様々なブログを読んだところワンホットエンコーディングを施している方もいればそうでない方もおられました。公式のドキュメントを読んでも明快な答えが得られなかったので質問させていただきます。よろしくお願いします。
該当コード
from tensorflow.keras.datasets import mnist import numpy as np import pandas as pd import matplotlib.pyplot as plt import tensorflow as tf (x_train, y_train), (x_test, y_test)=mnist.load_data() model=tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.fit(x_train, y_train, epochs=10)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/16 15:44
2022/10/16 16:04