Постройте и обучите нейронную сеть. Начните с простого — создайте модель логистической регрессии с десятью классами в Keras.
Вам понадобится:
- Функция активации
'softmax'; - Функция потерь
'sparse_categorical_crossentropy'(англ. «разрежённая категориальная кросс-энтропия»).
Слово sparse говорит о способе кодирования ответов. В задаче требуется просто номер класса, поэтому выбор пал на эту функцию потерь.
Когда ответы кодируются One-Hot-Encoding и классу 9 соответствует целый вектор [0, 0, 0, 0, 0, 0, 0, 0, 1], применяют categorical_crossentropy().
Обучите сеть на одной эпохе. Напечатайте прогресс обучения и значения точности на обучающей и тестовой выборках.
Подсказка
Допишите код:
model = keras.models.Sequential()
model.add(keras.layers.Dense(# < напишите код здесь >)
model.compile(loss='sparse_categorical_crossentropy', # < напишите код здесь >)
model.fit(features_train, target_train, epochs=1, verbose=2, validation_data=(features_test, target_test))
from tensorflow import keras
import matplotlib.pyplot as plt
import numpy as np
features_train = np.load('/datasets/fashion_mnist/train_features.npy')
target_train = np.load('/datasets/fashion_mnist/train_target.npy')
features_test = np.load('/datasets/fashion_mnist/test_features.npy')
target_test = np.load('/datasets/fashion_mnist/test_target.npy')
features_train = features_train.reshape(features_train.shape[0], 28 * 28)
features_test = features_test.reshape(features_test.shape[0], 28 * 28)
model = keras.models.Sequential()
model.add(keras.layers.Dense(units=10, activation='softmax', input_dim=features_train.shape[1]))
model.compile(loss='sparse_categorical_crossentropy', optimizer='sgd', metrics=['acc'])
model.fit(features_train, target_train, epochs=1, verbose=2, validation_data=(features_test, target_test))