1 回答

TA貢獻(xiàn)1856條經(jīng)驗 獲得超11個贊
由于我已經(jīng)解決了我的問題,我將分享我的解決方案。就像標(biāo)題所說的錯誤typeError: can't pickle thread rlock object顯然是因為我的模型中有原始張量在內(nèi)部游蕩,在這種情況下,在我的自定義模型中構(gòu)建的 def 內(nèi)部。
我采取的解決方案是制作一個包含計算的函數(shù),其中涉及 k.shape 并在 lambda 層內(nèi)調(diào)用該函數(shù)。這是我采用的示例解決方案。
這是問題代碼
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)
然后我將該代碼移動到一個函數(shù)中
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
在我的自定義模型中構(gòu)建 def 之后,我在 lambda 層中調(diào)用它
gt_boxes = KL.Lambda(lambda x: gtBoxes(*x))([input_image, input_gt_boxes])
這個解決方案是我從 TensorFlow GitHub issue 的一個問題中得到的,但我采用了不同的方法,因為即使在使用與該問題的解決方案相同的方法后,我仍然會遇到該錯誤。
添加回答
舉報