View difference between Paste ID: eC30kQvm and dmi8LK6X
SHOW: | | - or go back to the newest paste.
1-
'''Постройте архитектуру LeNet, изучив её описание в формате функции summary():
1+
# В прекоде создана свёрточная сеть. Допишите код так, чтобы передать ей на обучение и валидацию датасет с фруктами. 
2-
Model: "sequential"
2+
# Чтобы обучение не было слишком долгим, вызовите функцию fit() с шагом 1.
3-
_________________________________________________________________
3+
4-
Layer (type)                 Output Shape              Param #   
4+
from tensorflow.keras.preprocessing.image import ImageDataGenerator
5-
=================================================================
5+
from tensorflow.keras.models import Sequential
6-
conv2d (Conv2D)              (None, 28, 28, 6)         156       
6+
from tensorflow.keras.layers import Conv2D, AveragePooling2D, Flatten, Dense
7-
_________________________________________________________________
7+
    
8-
average_pooling2d (AveragePo (None, 14, 14, 6)         0         
8+
datagen = ImageDataGenerator(validation_split=0.25)
9-
_________________________________________________________________
9+
10-
conv2d_1 (Conv2D)            (None, 10, 10, 16)        2416      
10+
train_datagen_flow = datagen.flow_from_directory(
11-
_________________________________________________________________
11+
    '/datasets/fruits_small/',
12-
average_pooling2d_1 (Average (None, 5, 5, 16)          0         
12+
    target_size=(150, 150),
13-
_________________________________________________________________
13+
    batch_size=16,
14-
flatten (Flatten)            (None, 400)               0         
14+
    class_mode='sparse',
15-
_________________________________________________________________
15+
    # указываем, что это загрузчик для обучающей выборки
16-
dense (Dense)                (None, 120)               48120     
16+
    subset='training',
17-
_________________________________________________________________
17+
    seed=12345)
18-
dense_1 (Dense)              (None, 84)                10164     
18+
19-
_________________________________________________________________
19+
val_datagen_flow = datagen.flow_from_directory(
20-
dense_2 (Dense)              (None, 10)                850       
20+
    '/datasets/fruits_small/',
21-
================================================================= 
21+
    target_size=(150, 150),
22-
Функция активации во всех слоях, кроме последнего, — гиперболический тангенс (англ. hyperbolic tangent). Сети с такой активацией обучаются лучше сетей с сигмоидой. Превзойти 'tanh' может только ReLU, но на момент разработки LeNet она ещё не применялась.
22+
    batch_size=16,
23-
Вызовите функцию summary(). Запустите обучение на одном объекте, чтобы убедиться в работоспособности кода (уже в прекоде).
23+
    class_mode='sparse',
24-
'''
24+
    # указываем, что это загрузчик для валидационной выборки
25
    subset='validation',
26-
from tensorflow.keras import Sequential
26+
    seed=12345)
27-
from tensorflow.keras.layers import Conv2D, Flatten, Dense, AvgPool2D
27+
28-
import matplotlib.pyplot as plt
28+
29-
import numpy as np
29+
model.add(Conv2D(filters=6,
30
                 kernel_size=(3, 3),
31
                 activation='relu',
32-
features_train = np.load('/datasets/fashion_mnist/train_features.npy')
32+
                 input_shape=(150, 150, 3)))
33-
target_train = np.load('/datasets/fashion_mnist/train_target.npy')
33+
model.add(AveragePooling2D(pool_size=(2, 2)))
34-
features_test = np.load('/datasets/fashion_mnist/test_features.npy')
34+
35-
target_test = np.load('/datasets/fashion_mnist/test_target.npy')
35+
model.add(Dense(units=12, activation='softmax'))
36
37
model.compile(loss='sparse_categorical_crossentropy', 
38-
features_train = features_train.reshape(-1, 28, 28, 1) / 255.0
38+
              optimizer='adam', metrics=['acc'])
39-
features_test = features_test.reshape(-1, 28, 28, 1) / 255.0
39+
40
model.fit(train_datagen_flow,
41
          validation_data=val_datagen_flow,
42
          # Чтобы обучение не было слишком долгим, указываем
43-
model.add(Conv2D(filters=6, kernel_size=(5, 5), padding='same', activation='tanh', input_shape=(28, 28, 1)))
43+
          # количество шагов равным 1
44-
model.add(AvgPool2D(pool_size=(2, 2)))
44+
          steps_per_epoch=1,
45
          validation_steps=1,
46-
model.add(Conv2D(filters=16, kernel_size=(5, 5), activation='tanh', input_shape=(28, 28, 1)))
46+
          verbose=2, epochs=1)
47-
model.add(AvgPool2D(pool_size=(2, 2)))
47+