Предсказания с использованием моделей pylearn2

Я обучил следующую модель CNN, используя pylearn2.

h1
    Input space: Conv2DSpace(shape=(25, 150), num_channels=1, axes=('b', 0, 1, 'c'), dtype=float64)
    Total input dimension: 3750
h2
    Input space: Conv2DSpace(shape=(11, 73), num_channels=8, axes=('b', 'c', 0, 1), dtype=float64)
    Total input dimension: 6424
h3
    Input space: VectorSpace(dim=1024, dtype=float64)
    Total input dimension: 1024
h4
    Input space: VectorSpace(dim=1024, dtype=float64)
    Total input dimension: 1024
y
    Input space: VectorSpace(dim=1024, dtype=float64)
    Total input dimension: 1024

Вы можете наблюдать, что входными примерами для этого CNN являются серые изображения размером 25 x150. Конечное число выходов равно 10, то есть слой "у" имеет размерность вывода 10.

Мой обучающий набор данных создан с использованием CSVDataset в pylearn2, и я могу обучить модель.

Тем не менее, у меня есть проблема в создании прогнозов с помощью этой модели, которую я пытаюсь сделать с помощью файла prett_csv.py в папке scripts/mlp.

Проблема состоит в том, что Предикат_csv.py напрямую загружает файл test.csv в 2-мерную матрицу 1000 x 3750, представляющую 1000 тестовых примеров, каждый из которых имеет 3750 пикселей каждый. Однако при прогнозировании theano ожидает, что вход будет того же формата, что и вход слоя "h1". Возникает следующая ошибка:

TypeError: ('Bad input argument to theano function with name "../mlp/predict_csv.py:111"  at index 0(0-based)', 'Wrong number of dimensions: expected 4, got 2 with shape (1000, 3750).')

Я предполагаю, что требуемый формат - это формат ('b', 0, 1, 'c') для pylearn2.

Мне бы очень хотелось узнать, как мы осуществляем это преобразование из 2d массива в вышеуказанный требуемый формат. Или каким-либо другим способом решить эту проблему?

1 ответ

Чтобы решить мою проблему, я вручную преобразовал 2D-набор изображений (1000 x 3750) в 4D-массив со столбцами в виде количества примеров, строк и столбцов в изображении и количества каналов (1000 x 25 x 150 х 1). После этой трансформации все работало нормально.

Я надеялся найти класс или функцию pylearn2, которые бы непосредственно служили моей цели, потому что во время обучения pylearn2, очевидно, вносит эти изменения в само пространство.

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