Я прошел через реализацию keras autoencoder , используя python on MNIST набор данных , который доступен в форматах idx-ubyte и npz, и для кодирования требуется патч 28 на 28 и чем декодировать. В моем случае я хочу применить ту же схему кодирования к моим наборам данных чистых изображений (не в формате idx-ubyte или .npz). Я использовал пакет gzip в google colab для того, чтобы прочитать файл набора изображений .tgz, содержащий изображения .jpeg. Но, к сожалению, изображения не загружаются в чистом виде, а скорее информируют об искаженных пикселях, таких как необработанные байты. Моя единственная цель - сначала прочитать изображения в чистом виде для кератов, чтобы обучить их кодированию и декодированию. Ниже приведен мой код:
import keras
from matplotlib import pyplot as plt
import numpy as np
import gzip
%matplotlib inline
from keras.layers import Input,Conv2D,MaxPooling2D,UpSampling2D
from keras.models import Model
from keras.optimizers import RMSprop
def extract_data(filename, num_images):
with gzip.open(filename) as bytestream:
bytestream.read(16)
buf = bytestream.read(28 * 28 * num_images)
data = np.frombuffer(buf, dtype=np.uint8).astype(np.float32)
data = data.reshape(num_images, 28,28)
return data
#Here i am loading my dataset
train_data = extract_data('oxbuild_images.tgz', 5062)
query = train_data[5061]
plt.imshow(query.reshape(28,28), cmap='gray')
Запрос изображения в искаженном виде, что нежелательно!