python - 创建自定义图像数据集时出现 numpy 数组形状问题

标签 python numpy keras

我正在尝试使用 jpg 图像为深度学习项目创建自定义数据集。我需要批量阅读它们。使用下面的代码执行此操作,但我的数组形状是 (100, 1, 224, 224, 3) 而不是 (100,224, 224, 3)。有什么建议吗?

path = '/content/drive/My Drive/Dataset/Training'
X=[]
for img in os.listdir(path):
    pic = cv2.imread(os.path.join(path,img))
    pic = cv2.cvtColor(pic,cv2.COLOR_BGR2RGB)
    pic = cv2.resize(pic,(224,224))
    X.append([pic])
X=np.array(X)
print(X.shape)
(100, 1, 224, 224, 3)

最佳答案

从一般角度来看,使用 numpy 中的 squeeze 从张量中删除未使用的维度(单位长度)。

例如:

print(np.squeeze(X).shape)

给你:

(100, 224, 224, 3)

但也许在您的情况下,在第 7 行中使用 X.append(pic) 就足够了(尝试检查这一点)。

提示:使用numpy时尽量避免使用列表。关于@hpaulj注释,可以使用numpyconcatenate函数代替列表:

# initialization like X = []
X = np.zeros([0]+list(pic.shape))
...
# append
X = np.concatenate((X, pic.reshape([1]+list(pic.shape))), axis=0)

关于python - 创建自定义图像数据集时出现 numpy 数组形状问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66722720/

相关文章:

python - 在 Python 中使用神经网络进行光学字符识别

python - 比较 2 个 numpy 数组

更高效的Python输入/输出

tensorflow - 使用 Keras 中的分布式学习在多个 GPU 上分配大张量

python-3.x - 将 python 列表传递给 keras model.fit

带有特殊字符的 Python 正则表达式

python - 如何使用 matplotlib 实时绘制不断增长的数据文件?

python - Numpy 操作看起来很慢

python - 生成随机且唯一的索引,其范围为 n 个组合

python - Keras weighted_metrics 在计算中不包括样本权重