Advertisement
Step8rother

Компьютерное зрение: практика обучения нейронных сетей, Полносвязные сети

Jul 10th, 2023 (edited)
3,796
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.47 KB | Source Code | 1 0
  1. '''Постройте и обучите нейронную сеть на наборе данных с предметами одежды. Для этого создайте в коде три функции:
  2. загрузки обучающей выборки load_train(),
  3. создания модели create_model(),
  4. запуска модели train_model().
  5. Добейтесь того, чтобы значение accuracy на тестовой выборке было не меньше 85%.
  6. Отправьте ваш код в файле с расширением .py .
  7.  
  8. Подсказка
  9.  
  10. Приведите значения пикселей к диапазону [0, 1].
  11. Попробуйте:
  12. Построить полносвязную сеть с 2 или 3 слоями;
  13. Применить активацию ReLU.
  14. '''
  15.  
  16.  
  17. import numpy as np
  18. from tensorflow.keras import layers
  19. from tensorflow.keras.layers import Conv2D, Flatten, Dense, AvgPool2D, MaxPooling2D
  20. from tensorflow.keras.models import Sequential
  21. from tensorflow.keras.optimizers import Adam
  22. from tensorflow.keras.datasets import fashion_mnist
  23.  
  24.  
  25. def load_train(path):
  26.     features_train = np.load(path + 'train_features.npy')
  27.     target_train = np.load(path + 'train_target.npy')
  28.     features_train = features_train.reshape(features_train.shape[0], 28 * 28) / 255.
  29.     return features_train, target_train
  30.  
  31.  
  32. def create_model(input_shape):
  33.     model = Sequential()
  34.    
  35.     model.add(Dense(units=500, input_shape=input_shape, activation="relu"))
  36.     model.add(Dense(units=300, activation="relu"))
  37.     model.add(Dense(units=10, activation='softmax'))
  38.     return model
  39.  
  40.  
  41. def train_model(model, train_data, test_data, batch_size=48, epochs=50,
  42.                steps_per_epoch=None, validation_steps=None):
  43.     optimizer = Adam(lr=0.01)
  44.     model.compile(optimizer=optimizer, loss='sparse_categorical_crossentropy',
  45.               metrics=['acc'])
  46.     features_train, target_train = train_data
  47.     features_test, target_test = test_data
  48.     model.fit(features_train, target_train,
  49.               validation_data=(features_test, target_test),
  50.               batch_size=batch_size, epochs=epochs,
  51.               steps_per_epoch=steps_per_epoch,
  52.               validation_steps=validation_steps,
  53.               verbose=2, shuffle=True)
  54.  
  55.     return model
  56.  
  57.  
  58. '''Epoch 50/50
  59. 60000/60000 - 4s - loss: 0.3248 - acc: 0.8857 - val_loss: 0.4960 - val_acc: 0.8511
  60. 10000/10000 - 1s - loss: 0.4960 - acc: 0.8511
  61. '''
  62.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement