pro100chel
@pro100chel
Python && PHP Developer

Почему нейросеть даёт верные результаты только на тестовом датасете?

Есть нейросеть. Она натренирована на датасете FASHION_MNIST. Распознование тестовых датасетов работает великолепно, нейросеть почти всегда угадывает. Но вот я решил скачать изображение футболок и ботинок с интернета и подать на вход нейросети.

Ботинки она приняла за сумку, первую футболку она приняла за штаны, вторую футболку приняла за сумку. Мне кажется, что как-то неправильно я конвертирую изображение в массив данных.

from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
from tensorflow import keras
from keras.preprocessing.image import ImageDataGenerator
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config)

model = tf.keras.models.load_model('deeplearn.h5')

train_images = Image.open('1.jpg')
arr = np.asarray(train_images, dtype='uint8')
arr = arr.reshape(28, 28)
predictions = model.predict(arr.reshape(1, 28, 28))
answer = np.argmax(predictions[0])
print(class_names[answer])
  • Вопрос задан
  • 217 просмотров
Пригласить эксперта
Ответы на вопрос 3
Arseny_Info
@Arseny_Info
R&D engineer
Или оверфит на датасет, или предобработка картинок при тренировке и на тесте картинок из интернета отличается.
Ответ написан
Комментировать
@badproger12years
Для fashion_mnist лучшим решением будет сверточная нейронная сеть из 8-9 слоев.
У тебя либо переобучение(решение: добавь в fit, параметр validation_split = 0.2 либо 0.1, и смотри на какой эпохе ошибка на проверочной выборке возрастает и эту эпоху и ставь в fit),
либо тебе не стоит надеяться что нейронка обученная на черно белых фото, сможет дать правильный ответ на абсолютно другой футболке которая даже не включена в выборку(которая тем более из интернета).
P.S Этот парень тебе все расскажет о нейронках, с ног до головы
https://youtu.be/GKpVjx_b1Z4
P.S.S Используй сигмоидную нейронную сеть, которая обучается на одном фоте и дает ответ либо похожи(1) либо нет(0).
Ответ написан
@ivodopyanov
NLP, python, numpy, tensorflow
Еще одна возможность - что у вас как-то неправильно модель загружается из файла, и при предсказании там рандомные веса. Но это легко проверить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Фаст Софт Санкт-Петербург
от 150 000 до 180 000 ₽
от 250 000 ₽
Sibdev Красноярск
от 120 000 до 180 000 ₽