Tensorflow 如何裁剪依赖于模型输入的keras图像张量?
我想创建一个keras网络,该网络获取一个遮罩图像(一个矩形区域由零填充的图像)作为一个输入,并获取关于该区域位置的信息作为第二个输入:Tensorflow 如何裁剪依赖于模型输入的keras图像张量?,tensorflow,keras,conv-neural-network,slice,tensor,Tensorflow,Keras,Conv Neural Network,Slice,Tensor,我想创建一个keras网络,该网络获取一个遮罩图像(一个矩形区域由零填充的图像)作为一个输入,并获取关于该区域位置的信息作为第二个输入: 输入1:蒙版_图像,形状=(128,128,3) 输入2:mask_pos,shape=(2,)或(4,)取决于区域大小是固定的还是可变的 我想让我的网络填充“归零”区域,然后提取模型输出的重构区域 我今天遇到的主要问题是: 切片张量 关于我是否需要考虑批量,或者keras是否为我处理这些的困惑 如何使用切片/裁剪过程中第二个输入的值 下面是我当前尝试的代
- 输入1:蒙版_图像,形状=(128,128,3)
- 输入2:mask_pos,shape=(2,)或(4,)取决于区域大小是固定的还是可变的
def extract_mask_region(img, box_x, box_y):
return K.slice(img, (0, box_x, box_y, 0), (32, 32, 32, 3))
fill_in = Lambda(lambda args: extract_mask_region(args[0], args[1], args[2]))([filled_img, mask_pos[1], mask_pos[0]])
错误消息:
_ValueError:尝试将“begin”转换为张量,但失败。错误:形状
等级必须相等,但为1和0
将形状2与其他形状合并。对于输入形状为[]、[2]、[2]、[2]、[2]、[3]的“lambda_28/Slice/packed”(op:“Pack”)。老实说,我对tensorflow有点失望,因为我们仍然无法做到这一点。我一直在一个接一个地查看线程,但我没有找到一种可以使用矢量化操作的方法。我甚至不能将张量转换回numpy数组,因为tensorflow说它是纯符号的。老实说,我对tensorflow有点失望,我们仍然不能这样做。我一直在一个接一个地查看线程,但我没有找到一种可以使用矢量化操作的方法。我甚至不能将张量转换回numpy数组,因为tensorflow说它是纯符号的。
def extract_mask_region(img, box_x, box_y):
return K.slice(img, (0, box_x, box_y, 0), (32, 32, 32, 3))
fill_in = Lambda(lambda args: extract_mask_region(args[0], args[1], args[2]))([filled_img, mask_pos[1], mask_pos[0]])