你能帮助"tf.vectorize_map"形状输出错误吗



我正试图迭代两个批处理大小均为32的数组,但其中有嵌套的tf.vectorize_maps,因此每个数组一个,但它们的形状不同,因此:(32,12-1,4)和(321024,4)但我在嵌套的tf.function中的trainging_step中的model.fit/model.train_on_batch中做这件事。我得到了这个错误。

我得到了这个错误:

tf.vectorized Input to reshape is a tensor with 98304 values, but the requested shape has 288.

尝试修复或原创。

IoUs = tf.vectorized_map(lambda batch: tf.vectorized_map(lambda ypredValues: 
tfytrue(ytrue[batch],ypredValues),ypred[batch]),tf.range(32)) 
IoUs = tf.vectorized_map(lambda batch: tf.vectorized_map(lambda ypredValues: tfytrue(batch[0],ypredValues),batch[1]),(ytrue,ypred))

它在批索引相同时工作:

IoUs = tf.vectorized_map(lambda batch: tf.vectorized_map(lambda ypredValues: tfytrue(batch[1],ypredValues),batch[1]),(ytrue,ypred`))

但这是愚蠢的,因为我不能parrel-map批量大小并使用相同的数组:也许它在其他矢量化的_maps中,但如果有人能帮忙,那就太好了。我使用tf.vectorized的原因是速度比map_fn增加了大约3000倍,并且我能够使用numpy作为tf.py_func,而tf.numpy_array返回了无效的占位符值。

但它确实适用于elems=(ytrue,ypred),但不适用于model.fit或model.train_on_batch.

RegLoss = tfIoU(batch[1],self.RPN(batch[0])[0])

工作很好,但在train_on_batch/model.fit在我的自定义train_step tfIoU(ytrue,ypred)中:

Input to reshape is a tensor with 393216 values, but the requested shape has 4608

没有发生整形,它可以追溯到批量矢量化地图

我的问题是,因为它第一次起作用,就像它为tf.vectorized贴图设置形状一样,所以第二次不起作用

所以(32,12,4)工作,然后(32,8,4)失败,然后颠倒顺序,他们也这样做,有人能帮忙吗

它是tf.function();它只能在最后一个嵌套函数上,因为无论它的CCD_。

最新更新