tensorflow - ValueError:无法将输入数组从形状(512,512)广播到形状(512,512,1)
问题描述
我尝试使用 pre_process 函数和 color_mode 修改代码,但每次都会弹出不同的错误。
def pre_process(img):
ret, mask = cv2. threshold(img, 100, 255, cv2.THRESH_BINARY_INV)
mask_inv = cv2.bitwise_not(mask)
return mask_inv
train = ImageDataGenerator(rescale=1/255, vertical_flip=True,preprocessing_function=pre_process)
test = ImageDataGenerator(rescale=1/255, vertical_flip=True,preprocessing_function=pre_process)
train_dataset = train.flow_from_directory(path,
target_size=(512,512),
batch_size = 32,
class_mode = 'binary',
color_mode = 'grayscale',
shuffle = True
)
test_dataset = test.flow_from_directory(path,
target_size=(512,512),
batch_size =32,
class_mode = 'binary',
color_mode = 'grayscale',
shuffle = True
)
ValueError:无法将输入数组从形状(512,512)广播到形状(512,512,1).....这是我从上面的代码中得到的。
但是,如果我使用下面的 pre_process 方法,没有错误,但我的损失总是在训练时 NAN。
def pre_process(img):
ret, mask = cv2. threshold(img, 100, 255, cv2.THRESH_BINARY_INV)
mask_inv = cv2.bitwise_not(mask)
img_expanded = tf.expand_dims(mask_inv, 2)
return img_expanded
解决方案
推荐阅读
- android - 未创建任何 Firebase 应用 - 调用 Firebase.initializeApp
- mysql - 设置外键导致(errno:150“外键约束错误形成”)
- python - 使用 python-mechanize 找不到表单名称
- python - time.sleep() 是否使 while 循环消耗更少
- google-home - 从 Google NEST 获取 auth_code 时出现“找不到要链接到 [projectname] 的设备”,有什么方法可以模拟设备?
- c# - 负载测试 - 在 Jmeter 中运行 C# selenium 脚本
- windows - 为什么 git 在 diff 视图中没有更改时显示文件已修改?
- laravel - 如何根据预定义的日期显示数据
- c++ - -fsanitize=leak 如何影响运行时性能?
- c# - 用于数据库备份的 SQL 参数化查询被 sonarqube 报告为 sql 注入