Необработанный ввод CIFAR-10 в CNN с numpy и тензорным потоком - PullRequest
1 голос
/ 12 марта 2020

Я новичок в NN с Python и Tensorflow, и я пытаюсь создать входные данные для моего CNN. У меня есть набор данных CIFAR10, список 50000x3072 в Python (список, содержащий 50000 списков из 3072 элементов), для тренировочных образов, и я не использую набор данных CIFAR10 из керас. CNN - то же самое, что и для базового c TF примера: https://www.tensorflow.org/tutorials/images/cnn Каждый список 3072 элементов имеет следующую организацию: первые 1024 элемента для первого цветового канала, секунды 1024 для второго цветной канал и тд. Я хочу организовать этот список, используя массив numpy так же, как в кератах (массив np из 32 строк, каждый из которых содержит 32 массива np 3-мерных списков (3 цветовых канала на пиксель)).

Я пытался использовать reshape и другие основные функции c, но я не уверен, что нужно сделать, чтобы получить результат.

1 Ответ

1 голос
/ 13 марта 2020

Чтобы преобразовать данные из размера (50000,3072) в данные, требуемые для CNN, вы можете использовать tf.reshape, как показано ниже:

!pip install tensorflow==2.1

import tensorflow as tf
import numpy as np
tf.__version__

a = tf.constant(np.zeros((50000,3072)))

a.shape #TensorShape([50000, 3072])

b = tf.reshape(a, [-1,32,32,3])

b.shape #TensorShape([50000, 32, 32, 3])

И в первом слое CNN вы можно указать форму ввода, как указано ниже:

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))

Для получения дополнительной информации о tf.reshape, пожалуйста, обратитесь к этой странице Tensorflow .

Для получения дополнительной информации о CNN на Набор данных CIFAR, см. Это Учебное пособие по CNN на сайте Tensorflow.

...