Как преобразовать набор изображений в массив numpy?

Я строю свою первую нейронную сеть, взяв за основу те, что описаны в книге «Глубокое обучение с помощью Python — Франсуа Шолле», и сразу же нашел свою первую проблему. Когда автор импортировал набор данных MNIST, он также напечатал форму, получив 1D-тензор. Я пытаюсь импортировать папку, содержащую все изображения кэдди, чтобы проверить, правильно ли их каталогизирует NN. Проблема в том, что я не могу получить одномерный тензор из всех этих изображений. Я пытался преобразовать каждый из них с помощью numpy.asarray(my_image). Я также пытался преобразовать весь список, но оказалось, что он стал кортежем... есть подсказка?

train_label = 'Caddies'
train_images = list()

for filename in listdir('/content/drive/MyDrive/Data set/Caddies/'):
    img_data = image.imread('/content/drive/MyDrive/Data set/Caddies/' +\
                       filename)
    img_data = np.asarray(img_data)
    #print(str(img_data.dtype) + str(img_data.shape))
    train_images.append(img_data)

    print('> loaded %s images' % (len(train_images)))

    train_images = np.array(train_images)

    print(train_images.shape())

Отвечает ли это на ваш вопрос? Преобразование изображения ( png ) в матрицу, а затем в массив 1D

Ruli 11.12.2020 12:44
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
936
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите передать свои изображения в нейронную сеть, я предлагаю вам не использовать цикл for для загрузки всех ваших изображений в память. Вместо этого вы можете использовать эту функцию:

import tensorflow as tf
import os
os.chdir('pictures')

files = tf.data.Dataset.list_files('*jpg')

def load_images(path):
    image = tf.io.read_file(path)
    image = tf.io.decode_jpeg(image)
    image = tf.image.convert_image_dtype(image, tf.float32) # optional
    image = tf.image.resize(image, (224, 224))              # optional
    return image 

ds = files.map(load_images).batch(1)

next(iter(ds)).shape
(1, 224, 224, 3)

Это работает, но, честно говоря, я не совсем понимаю, что делает весь код. Можешь пожалуйста объяснить? Особенно последние инструкции: ds = files.map... и next(iter(ds))...

valeriova96 12.12.2020 10:10

Другие вопросы по теме