Я выполнил следующие операции с изображениями перед тренировкой модели keras:
for img in os.listdir(path):
# convert to array
img_array = cv2.imread(os.path.join(path,img) ,cv2.IMREAD_GRAYSCALE)
# resize to normalize data size
new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))
# add this to our training_data list
training_data.append([new_array, class_num])
#shuffle the data
random.shuffle(training_data)
#empty lists (X for features, y for labels)
X = []
y = []
for features,label in tqdm(training_data):
X.append(features)
y.append(label)
X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)
Я тренирую модель. Вот начальный слой:
#start creating model
model = Sequential()
model.add(Conv2D(256, (3, 3), input_shape=X.shape[1:])
Я использую обученную модель для получения некоторых прогнозов ( Я тренирую модель на python, а затем загружаю модель в Tensorflow.js )
Фрагмент кода для прогнозирования
let imageTensor = tf.fromPixels(image);
model.predict(imageTensor).print();
Я получаю следующую ошибку:
Uncaught Error: ошибка при проверке: ожидается, что conv2d_input будет иметь 4
размер (ы), но получил массив с формой [275,183,3]
Изменение вышеуказанного кода на
let imageTensor = tf.fromPixels(image).resizeNearestNeighbor([50,50]).mean(2).toInt().expandDims(2);
model.predict(imageTensor).print();
выдает следующую ошибку:
Uncaught Error: ошибка при проверке: ожидается, что conv2d_input будет иметь 4
размер (ы), но получил массив с формой [50,50,1]
наконец, когда я делаю это
let imageTensor = tf.fromPixels(image).resizeNearestNeighbor([50,50]).toInt().expandDims();
model.predict(imageTensor).print();
Я получаю следующую ошибку:
Ошибка при проверке: ожидаемая форма conv2d_input
[null, 50,50,1], но получил массив с формой [1,50,50,3].