View difference between Paste ID: FaW6GsfJ and R4DfUkuw
SHOW: | | - or go back to the newest paste.
1-
'''Постройте и обучите нейронную сеть. Начните с простого — создайте модель логистической регрессии с десятью классами в Keras. 
1+
#В конце прошлой темы вы обучили полносвязную сеть для решения задачи классификации одежды. Замените эту сеть на свёрточную со слоями: Conv2D + relu + Flatten + Dense. Примените в свёрточном слое 4 фильтра размером 3x3.
2-
Вам понадобится:
2+
#Обучать свёрточную сеть не нужно. Вызовите у модели функцию summary(): она напечатает на экране информацию об устройстве сети.
3-
Функция активации 'softmax';
3+
4-
Функция потерь 'sparse_categorical_crossentropy' (англ. «разрежённая категориальная кросс-энтропия»).
4+
from tensorflow.keras import Sequential
5-
Слово sparse говорит о способе кодирования ответов. В задаче требуется просто номер класса, поэтому выбор пал на эту функцию потерь. 
5+
from tensorflow.keras.layers import Conv2D, Flatten, Dense
6-
Когда ответы кодируются One-Hot-Encoding и классу 9 соответствует целый вектор [0, 0, 0, 0, 0, 0, 0, 0, 1], применяют categorical_crossentropy().
6+
7-
Обучите сеть на одной эпохе. Напечатайте прогресс обучения и значения точности на обучающей и тестовой выборках.
7+
8-
'''
8+
9
10-
from tensorflow import keras
10+
11
target_train = np.load('/datasets/fashion_mnist/train_target.npy')
12
features_test = np.load('/datasets/fashion_mnist/test_features.npy')
13
target_test = np.load('/datasets/fashion_mnist/test_target.npy')
14
15
# Меняем размерности изображений и приводим числа к диапазону [0, 1].
16
# При изменении размера одну из размерностей можно указать равной -1, 
17
# чтобы она вычислялась автоматически
18
features_train = features_train.reshape(-1, 28, 28, 1) / 255.0
19
features_test = features_test.reshape(-1, 28, 28, 1) / 255.0
20-
features_train = features_train.reshape(features_train.shape[0], 28 * 28)
20+
21-
features_test = features_test.reshape(features_test.shape[0], 28 * 28)
21+
model = Sequential()
22
23-
model = keras.models.Sequential()
23+
model.add(Conv2D(filters=4, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))
24-
model.add(keras.layers.Dense(10, activation='softmax', input_dim=features_train.shape[1]))
24+
model.compile(loss='sparse_categorical_crossentropy', optimizer='sgd', metrics=['acc'])
25
26-
model.compile(loss='sparse_categorical_crossentropy',
26+
model.add(Flatten())
27-
              optimizer='sgd',
27+
model.compile(loss='sparse_categorical_crossentropy', optimizer='sgd', metrics=['acc'])
28-
              metrics=['acc'])
28+
29
model.add(Dense(10, activation='softmax',input_dim=features_train.shape[1])) 
30-
model.fit(features_train, target_train, epochs=1, verbose=2,
30+
model.compile(loss='sparse_categorical_crossentropy', optimizer='sgd', metrics=['acc'])
31-
          validation_data=(features_test, target_test))
31+
32
model.summary()
33