Numpy: увеличение размера 4-го измерения - PullRequest
0 голосов
/ 12 октября 2018

У меня есть 4D-массив: (#images, height, width, channel) изображений RGB.Точные размеры: (46, 224, 224, 3).

У меня также есть версии тех же изображений в оттенках серого.Точные размеры: (46, 224, 224, 1).

Я играю с Keras, пытаюсь сделать авто-кодер, чтобы узнать значения изображения из оттенков серого, но модель жалуется на размеры,поэтому я хотел бы добавить 2 дополнительных канала в массив градаций серого, но я не могу понять, как это сделать.

temp_gray_images = np.zeros(original_images.shape, dtype=np.float32)
temp_gray_images[:,:,:,0] = gray_images
ValueError: could not broadcast input array from shape (46,224,224,1) into shape (46,224,224)

Итак, я узнал о numpy.hstack и открыл новыйтерминал и попытался поиграть с некоторыми фиктивными данными и несколькими измерениями, которые я мог обработать, и смог получить ожидаемые результаты.Однако, похоже, что это не работает с 4 измерениями.

temp_gray_images = np.hstack([gray_images, np.zeros([original_images.shape[0], original_images.shape[1], original_images.shape[2], 2])])
ValueError: all the input array dimensions except for the concatenation axis must match exactly

Что не имеет смысла, потому что я сохранил первые 3 измерения одинакового размера.

Но в конечном итоге проверкаданные не совпадают с данными поезда из-за 2 дополнительных каналов в RGB и градациях серого.

x_train shape: (46, 224, 224, 3)
xtest_shape shape: (46, 224, 224, 1)
autoencoder.fit(x_train, x_train, epochs=50, batch_size=256, shuffle=True, validation_data=(x_test, x_test))

Спасибо.

1 Ответ

0 голосов
/ 12 октября 2018

Может ли это быть тем, что вы ищете?

import numpy as np
x_train=np.random.randn(46, 224, 224, 1)
y=np.repeat(x_train,3,axis=3)
print(y.shape) #(46, 224, 224, 3)

повтор повторит изображения серой шкалы на необходимое количество каналов

...