Fashion-MNISTを使ったKeras学習モデルでテストするところまで作成しました。訓練回数は30回です。テスト結果はグラフの右上に表示しています。
テストの結果データはhistory.historyにtestキーとして追加し、JSONファイルに保存しています。
import tensorflow.keras as keras
from tensorflow.keras import models
from keras.layers import Dense, Flatten
import matplotlib.pyplot as plt
import time,datetime,os,json
def plot_loss_accuracy_graph(history,eval):
<略>
return dt_now_str # グラフ作成日時
def main():
epochs=30
# データセット取得
fashion_mnist = keras.datasets.fashion_mnist
(X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()
print(f'X_train_full.shape {X_train.shape}')
print(f'X_test.shape {X_test.shape}')
X_train = X_train / 255.
X_test = X_test / 255.
# モデル作成
model = models.Sequential()
model.add(Flatten(input_shape=[28, 28]))
model.add(Dense(300, activation="relu"))
model.add(Dense(100, activation="relu"))
model.add(Dense(10, activation="softmax"))
print(f'model.layers {model.layers}')
model.summary()
model.compile(loss="sparse_categorical_crossentropy",
optimizer="sgd",
metrics=["accuracy"])
# 訓練
history = model.fit(X_train, y_train, epochs=epochs,
validation_split=0.1)
print(f'history.history {history.history}')
# 検証結果
val_loss = history.history['val_loss'][-1]
val_accuracy = history.history['val_accuracy'][-1]
print('val_loss:', val_loss)
print('val_accuracy:', val_accuracy)
# テスト
test = model.evaluate(X_test, y_test)
print(f'test {test}')
# グラフ化
ret = plot_loss_accuracy_graph(history,test)
test2 = {"test":test}
history.history.update(**test2)
json_file = f'{ret}_history_data.json'
with open(json_file ,'w' ) as f:
json.dump(history.history ,f ,ensure_ascii=False ,indent=4)
model.save(f'{ret}_keras-mnist-model.h5')
if __name__ == "__main__":
start = time.time()
main()