【问题标题】:Issue with numpy array shape when creating custom image dataset创建自定义图像数据集时出现 numpy 数组形状的问题
【发布时间】:2021-03-20 14:30:14
【问题描述】:

我正在尝试使用 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)

【问题讨论】:

  • X.append(pic) 添加尺寸 1 维度的是 []。
  • @hpaulj,你看我的回答了吗?我写的和你现在评论的完全一样。

标签: python numpy keras


【解决方案1】:

从一般的角度来看,使用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)

【讨论】:

  • 列表在迭代收集值时最好。
  • @hpaulj 我只写了“尽量避免”(这不是限制),因为使用列表会增加计算时间。
猜你喜欢
  • 2021-10-24
  • 1970-01-01
  • 2022-01-16
  • 2022-01-08
  • 2022-01-16
  • 2013-11-09
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
相关资源
最近更新 更多