Цифровое образование

Графика: Строим Нейронную Сеть для Распознавания Изображений за 20 минут - видео HD

Графика: Строим Нейронную Сеть для Распознавания Изображений за 20 минут - видео
00:19:57

editor 9805 роликов

Строим Нейронную Сеть для Распознавания Изображений за 20 минут - видео.

В данной лекции мы с вами построим свою собственную нейронную сеть за 20 минут, которая сможет распознавать изображения одежды.
Ссылка на полный курс со скидкой 90%:
www.udemy.com/course/ai-machinelearning-ru/?referralCode=6C8411141FAB3F54B655
RSS
Marusia zzz
18:02
Здравствуйте, как с Вами связаться?
Sisoniyk Vitaliy
10:05
Спасибо за материал, идеальное введение в ML
Павел Блок
15:36
Шикарная информация, очень пригодилась. Всё понятно
ABC
13:44
+3
Можете ли пжл выложить набранный код целиком, чтобы не набирать с экрана?
Михаил Митьков
23:33
Здравствуйте! Спасибо за ваш канал. Решил поэкспериментировать с кодом где я преобразую 784 просто в строку без этих вот команд. Результат вроде бы должен быть одним и тем же. Но при обучении очень высокая ошибка, а у вас она порядка сотых… у меня больше 2-х. Почему так? Вы может и не ответите мне, но я все же рискну и спрошу у вас))) А то вот полно таких видео с другими блогерами где вы все строго используете команду Flatten(input_shape=(28, 28, 1)). А почему в начале не преобразовать просто в одномерный вектор чтоб было соответствие вашей архитектуре сети? Тогда обучив сеть и взяв весовые коэффициенты путем перемножения матриц и функций активации ее можно использовать уже в других программах. А вот так как вы все рассматриваете однотипные примеры по распознаванию текста и прочего, не дает возможности строить нейронную сеть для любых задач. Потому что с одномерным вектором она никак не обучается правильно

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.datasets import mnist # библиотека базы выборок Mnist
from tensorflow import keras
from tensorflow.keras.layers import Dense, Flatten

(x_train, y_train), (x_test, y_test) = mnist.load_data()

# стандартизация входных данных
x_train = x_train / 255
x_train_my = x_train.flatten()
x_test = x_test / 255
x_test_my = x_test.flatten()

y_train_cat = keras.utils.to_categorical(y_train, 10)
y_test_cat = keras.utils.to_categorical(y_test, 10)

plt.imshow(x_train[2], cmap=plt.cm.binary)
plt.show()

x_train_my_2 = []
x_test_my_2 = []
for i in range(0, int(len(x_train_my)/784)):
x_train_my_2.append(x_train_my[i:784 + i])
for ii in range(0, int(len(x_test_my)/784)):
x_test_my_2.append(x_test_my[ii:784 + ii])
j = 59999
print(len(x_train_my_2[j]))
print(y_train_cat[j])

model = keras.Sequential()
model.add(Dense(128, input_shape=(784,), activation='relu'))
model.add(Dense(10, activation='softmax'))

print(model.summary())

model.compile(optimizer=keras.optimizers.Adam(0.001),
loss='categorical_crossentropy',
metrics=['accuracy'])

model.fit(np.array(x_train_my_2), y_train_cat, batch_size=32, epochs=5, validation_split=0.2)

model.evaluate(np.array(x_test_my_2), y_test_cat)

А вот что выдает при обучении:
Epoch 1/5
1500/1500 [==============================] — 4s 3ms/step — loss: 2.3098 — accuracy: 0.1074 — val_loss: 2.3103 — val_accuracy: 0.1040
Epoch 2/5
1500/1500 [==============================] — 3s 2ms/step — loss: 2.3006 — accuracy: 0.1151 — val_loss: 2.3081 — val_accuracy: 0.1073
Epoch 3/5
1500/1500 [==============================] — 4s 2ms/step — loss: 2.2931 — accuracy: 0.1226 — val_loss: 2.3148 — val_accuracy: 0.1024
Epoch 4/5
1500/1500 [==============================] — 4s 2ms/step — loss: 2.2795 — accuracy: 0.1344 — val_loss: 2.3242 — val_accuracy: 0.1042
Epoch 5/5
1500/1500 [==============================] — 4s 2ms/step — loss: 2.2580 — accuracy: 0.1529 — val_loss: 2.3411 — val_accuracy: 0.1020

очевидно что ничего не распознается правильно
Загрузка...