1 回答
TA贡献1856条经验 获得超11个赞
由于我已经解决了我的问题,我将分享我的解决方案。就像标题所说的错误typeError: can't pickle thread rlock object显然是因为我的模型中有原始张量在内部游荡,在这种情况下,在我的自定义模型中构建的 def 内部。
我采取的解决方案是制作一个包含计算的函数,其中涉及 k.shape 并在 lambda 层内调用该函数。这是我采用的示例解决方案。
这是问题代码
h, w = K.shape(input_image)[1], K.shape(input_image)[2]
image_scale = K.cast(K.stack([h, w, h, w], axis=0), "float32")
gt_boxes = KL.lambda(lambda x: x/image_scale)(input_gt_boxes)
然后我将该代码移动到一个函数中
def gtBoxes(input_image, input_gt_boxes):
h, w = K.shape(input_image)[1], K.shape(input_image)[2]
image_scale = K.cast(K.stack([h, w, h, w], axis=0), "float32")
gt_boxes = input_gt_boxes/image_scale
return gt_boxes
在我的自定义模型中构建 def 之后,我在 lambda 层中调用它
gt_boxes = KL.Lambda(lambda x: gtBoxes(*x))([input_image, input_gt_boxes])
这个解决方案是我从 TensorFlow GitHub issue 的一个问题中得到的,但我采用了不同的方法,因为即使在使用与该问题的解决方案相同的方法后,我仍然会遇到该错误。
添加回答
举报
