Отредактировано : Я также предоставляю код загрузки данных
Как я могу изменить его для моей сети. До сих пор я использовал этот способ изменения формы, и это было хорошо для меня, но теперь это не работает ( Я не знаю, почему .
import numpy as np
import cv2, os, random
import matplotlib.pyplot as plt
from tqdm import tqdm
import model
import h5py
import tensorflow as tf
from tensorflow.keras.layers import Input, Activation
from tensorflow.keras.layers import Conv2D, MaxPool2D, GlobalAvgPool2D
from tensorflow.keras.models import Model
textdir = r'F:\LOCAL_DATASETS\CNR-EXT-Patches-150x150\LABELS'
datadir = r'F:\LOCAL_DATASETS\CNR-EXT-Patches-150x150\PATCHES'
train_test_val = ['train.txt', 'test.txt', 'val.txt']
def imgToArray(text = 'train', img_shape = 150):
data = []
x_data = []
y_label = []
if text == 'train':
with open(os.path.join(textdir, 'train.txt')) as e:
for line in tqdm(e):
path = os.path.join(datadir, line.split(' ')[0])
class_num = int(line.split(' ')[1])
try:
img_array = cv2.imread(path, cv2.IMREAD_COLOR)
new_array = cv2.resize(img_array, (img_shape, img_shape))
data.append([img_array, class_num])
except Exception as e:
pass
elif text == 'test':
with open(os.path.join(textdir, 'test.txt')) as e:
for line in tqdm(e):
path = os.path.join(datadir, line.split(' ')[0])
class_num = int(line.split(' ')[1])
try:
img_array = cv2.imread(path, cv2.IMREAD_COLOR)
new_array = cv2.resize(img_array, (img_shape, img_shape))
data.append([img_array, class_num])
except Exception as e:
pass
elif text == 'val':
with open(os.path.join(textdir, 'val.txt')) as e:
for line in tqdm(e):
path = os.path.join(datadir, line.split(' ')[0])
class_num = int(line.split(' ')[1])
try:
img_array = cv2.imread(path, cv2.IMREAD_COLOR)
new_array = cv2.resize(img_array, (img_shape, img_shape))
data.append([img_array, class_num])
except Exception as e:
pass
else:
print("File not found!")
random.shuffle(data)
for features, label in data:
x_data.append(features)
y_label.append(label)
return np.array(x_data), np.array(y_label)
x, y = imgToArray('train')
print(x.shape)
print(y.shape)
x_data = x.reshape(-1, 150, 150, 3) <- problem is here!
И я получил следующую ошибку . Возможно, я пропустил некоторые обновления с numpy или допустил ошибку:
ValueError:Traceback (most recent call last)
<ipython-input-93-4b9ee0985e72> in <module> ----> 1 x_data = x_data.reshape(-1, 150, 150, 3)
ValueError: cannot reshape array of size 94493 into shape (150,150,3)
- Как мне получить мои образцы данных, выглядящие так: (9493,150,150, 3)