试图重塑我的Numpy数组以具有额外的尺寸

时间:2019-06-29 01:21:35

标签: python-3.x numpy opencv keras

我目前正在使用此代码来获取图像的灰度图像表示形式,并以(512, 370, 1)数组的格式表示。

img_instance = cv2.imread(df.iloc[i][x_col]) / 255.
img_instance = cv2.resize(img_instance, (target_size[1], target_size[0]))
mask_instance = cv2.imread(df.iloc[i][y_col], cv2.IMREAD_GRAYSCALE) / 255.
mask_instance = cv2.resize(mask_instance, (target_size[1], target_size[0]))
print(mask_instance.shape)
mask_instance.reshape(target_size[0], target_size[1], 1)
print(mask_instance.shape)

第一次打印,我得到一个(512, 370),第二个打印语句上也得到一个(512, 370)。这对我来说是个问题,因为我正在尝试构建Keras模型,在该模型中我有一个看起来像是我要将遮罩实例适合到的下一层的层。

__________________________________________________________________________________________________
conv2d_19 (Conv2D)              (None, 512, 370, 1)  17          activation_18[0][0]

2 个答案:

答案 0 :(得分:1)

  • reshape无法就地工作!
  • 形状必须是元组。

mask_instance = mask_instance.reshape((target_size[0], target_size[1], 1))

答案 1 :(得分:0)

似乎np.reshape()没有添加尺寸,但是要使用的正确函数是mask_instance = np.expand_dims(mask_instance, axis=2)。轴为2,因为后端在通道最后一个模型上运行。