ValueError: Error when checking input: expected input_1 to have 4 dimensions, but got array with shape (None, None, None)
ValueError: Error when checking input: expected input_1 to have 4 dimensions, but got array with shape (None, None, None)
我是 Tensorflow 的新手,我尝试通过将 PDF 文件转换为图像并将其提供给模型来使用 CNN 对其进行分类。
我用 keras 创建了一个自定义 DataGenerator(使用 this tutorial),当 运行ning model.fit().
时我得到一个 ValueError
当我 运行 model.summary() 时我的输入层是:input_1 (InputLayer) [(None, 224, 224, 3 )]
下面是我对 __ getitem __ 和 __data_generation 的代码:
def __getitem__(self, index):
index = self.index[index * self.batch_size:(index + 1) * self.batch_size]
batch = [self.indices[k] for k in index]
X, y = self.__data_generation(batch)
return X, y
def __data_generation(self, batch):
df = self.df
X = np.empty((self.batch_size, *self.dim))
y = np.empty((self.batch_size), dtype=int)
for i, id in enumerate(batch):
# Loading the image :
doc_row = df.loc[i]
path = str(doc_row['PATH'])
path = os.path.join(dataset_path,path)
typologie = str(doc_row['TYPOLOGIE'])
img_i = convert_from_path(path)[0]
# Converting the image :
img_i = img_i.resize((224,224), Image.ANTIALIAS)
gray_img_i = ImageOps.grayscale(img_i)
array_image_i = np.array(gray_img_i,dtype='float32')
array_image_i = np.expand_dims(array_image_i, axis=0)
X[i,] = array_image_i
y[i] = self.map_classes[typologie]
X = [np.array(X)]
Y = np.array(y)
Y = tf.keras.utils.to_categorical(Y, num_classes = self.num_classes)
return X, Y
ValueError:检查输入时出错:预期 input_1 有 4 个维度,但得到的数组形状为 (None, None , None)
我尝试使用建议的 np.expand_dims() ,但它没有解决我的问题。
我怀疑转换部分有问题,但我不知道问题出在哪里。
我在这段代码中犯了 2 个错误:
我换了
gray_img_i = ImageOps.grayscale(img_i)
array_image_i = np.array(gray_img_i,dtype='float32')
作者:
array_image_i = np.array(img_i,dtype='float32')
通过这样做,我将每个图像的形状从 (1, 224, 224) 更改为 (1, 224, 224, 3)。
形状中的“3”表示我需要一个 RGB 图像(每个图像 3 个通道),因此删除灰度非常有用!
我换了
doc_row = df.loc[i]
作者:
doc_row = df.loc[id]
我在 for 循环中反转了 i 和 id。
我是 Tensorflow 的新手,我尝试通过将 PDF 文件转换为图像并将其提供给模型来使用 CNN 对其进行分类。 我用 keras 创建了一个自定义 DataGenerator(使用 this tutorial),当 运行ning model.fit().
时我得到一个 ValueError当我 运行 model.summary() 时我的输入层是:input_1 (InputLayer) [(None, 224, 224, 3 )]
下面是我对 __ getitem __ 和 __data_generation 的代码:
def __getitem__(self, index):
index = self.index[index * self.batch_size:(index + 1) * self.batch_size]
batch = [self.indices[k] for k in index]
X, y = self.__data_generation(batch)
return X, y
def __data_generation(self, batch):
df = self.df
X = np.empty((self.batch_size, *self.dim))
y = np.empty((self.batch_size), dtype=int)
for i, id in enumerate(batch):
# Loading the image :
doc_row = df.loc[i]
path = str(doc_row['PATH'])
path = os.path.join(dataset_path,path)
typologie = str(doc_row['TYPOLOGIE'])
img_i = convert_from_path(path)[0]
# Converting the image :
img_i = img_i.resize((224,224), Image.ANTIALIAS)
gray_img_i = ImageOps.grayscale(img_i)
array_image_i = np.array(gray_img_i,dtype='float32')
array_image_i = np.expand_dims(array_image_i, axis=0)
X[i,] = array_image_i
y[i] = self.map_classes[typologie]
X = [np.array(X)]
Y = np.array(y)
Y = tf.keras.utils.to_categorical(Y, num_classes = self.num_classes)
return X, Y
ValueError:检查输入时出错:预期 input_1 有 4 个维度,但得到的数组形状为 (None, None , None)
我尝试使用建议的 np.expand_dims()
我怀疑转换部分有问题,但我不知道问题出在哪里。
我在这段代码中犯了 2 个错误:
我换了
gray_img_i = ImageOps.grayscale(img_i) array_image_i = np.array(gray_img_i,dtype='float32')
作者:
array_image_i = np.array(img_i,dtype='float32')
通过这样做,我将每个图像的形状从 (1, 224, 224) 更改为 (1, 224, 224, 3)。 形状中的“3”表示我需要一个 RGB 图像(每个图像 3 个通道),因此删除灰度非常有用!
我换了
doc_row = df.loc[i]
作者:
doc_row = df.loc[id]
我在 for 循环中反转了 i 和 id。