Странная проблема тензорного потока: упал ряд - PullRequest
0 голосов
/ 04 марта 2019

Я не уверен, что здесь происходит.Я читал об этой ошибке, и я интерпретирую ее как ошибку, связанную с изменением формы изображения.По некоторым причинам последние 3 ранга отсутствуют.Набор данных содержит каждое изображение, ненормализованное по ширине и высоте.Изображения должны быть квадратными после обработки, в которой функция изменения размера scikit не может заполнить пространство.Вместо этого он вводит в train_X пропорционально масштабированный набор, основанный на максимальном измерении.Вот идея потока.

def read_img(file):  
    img = skimage.io.imread(img_folder + file)
    img = skimage.transform.resize(img, (img_height, img_width), mode='reflect')

    return img[:,:,:img_channels] #the last 3 ranks meant to fill in the traceback

Функция read_img подает в train_X.

train_X = np.stack(train_['file'].apply(read_img))

Вот трассировка.

Traceback (most recent call last):
File "A:\anoth\...\newmodel.py", line 196, in <module>
generator, train_X, val_X, test_X, train_y, val_y, test_y = 
prepare2train(train_, val_, test_, 'Category')
File "A:\anoth\...\newmodel.py", line 192, in prepare2train
generator.fit(train_X,augment=True, rounds=50, seed=43)
File "A:\anoth\Anaconda\lib\site-packages\keras_preprocessing\image.py", line 1347, in fit
'Got array with shape: ' + str(x.shape))
ValueError: Input to `.fit()` should have rank 4. Got array with shape: (6848,)

Понимаю ли яэта проблема правильно?Если так, почему train_X может отбросить последние 3 ранга?Как мне решить эту проблему?

1 Ответ

0 голосов
/ 05 марта 2019

img = skimage.transform.resize (img, (img_height, img_width), mode = 'отражение') по какой-то причине неправильно изменяет размер изображений.Изменение размера изображений вне python и не использование этой строки кода решило проблему упущенных рангов.

...