Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow tf.data input pipeline、动态成形张量和切片:未实现错误:无法将符号张量(args_0:0)转换为numpy数组_Tensorflow_Deep Learning_Tf.data.dataset - Fatal编程技术网

Tensorflow tf.data input pipeline、动态成形张量和切片:未实现错误:无法将符号张量(args_0:0)转换为numpy数组

Tensorflow tf.data input pipeline、动态成形张量和切片:未实现错误:无法将符号张量(args_0:0)转换为numpy数组,tensorflow,deep-learning,tf.data.dataset,Tensorflow,Deep Learning,Tf.data.dataset,我正在尝试使用tensorflow和tf.data编写有效的数据输入。 我想复制PIL.Image.Image.crop的功能,其中可以传递负的边界框值,以便裁剪用零展开 例如,如果我调用PIL.Image.Image.crop([-10,0,img\u height,img\u width]),则图像在开始时有10行额外的行,这些行用零填充 据我所知,在tf.data输入管道中使用python函数可以显著降低代码的速度,因此我尝试使用tensorflow函数编写所有代码。我还想使用API已经提

我正在尝试使用tensorflow和
tf.data
编写有效的数据输入。 我想复制
PIL.Image.Image.crop
的功能,其中可以传递负的边界框值,以便裁剪用零展开

例如,如果我调用
PIL.Image.Image.crop([-10,0,img\u height,img\u width])
,则图像在开始时有10行额外的行,这些行用零填充

据我所知,在tf.data输入管道中使用python函数可以显著降低代码的速度,因此我尝试使用tensorflow函数编写所有代码。我还想使用API已经提供的预取、批处理、洗牌等

我使用tensorflow函数实现PIL裁剪的计划是预先分配一个(动态成形的)零张量,并使用切片分配裁剪值

这就是我遇到的错误:
NotImplementedError:无法将符号张量(args_2:0)转换为numpy数组。此错误可能表示您正试图将张量传递给NumPy调用,这是不受支持的

以下是复制此问题的最少代码:

将tensorflow导入为tf
ds2=tf.data.Dataset.from_tensor_切片(np.arange(10))
def预处理程序(编号):
o=tf.零((数字,数字))
# ...
ds2.map(预编程)
问题1:我如何解决这个问题

问题2:我来自PyTorch的背景,我对整个tf.data管道的复杂性感到困惑。为什么我只使用tensorflow函数来使用所有好的特性


作为参考,这里是我到目前为止的完整代码

类My预处理:
定义调用(自,*数据):
#为了简单起见,省略了完整的代码。
#这被称为:
自我。_作物(…)
def_裁剪(自身、img、中心、车身尺寸、分辨率):
tl=tf.cast(中心-阀体尺寸/2,数据类型=tf.int32)
br=tf.cast(中心+主体尺寸/2,数据类型=tf.int32)
高度、宽度=tf.形状(img)[0],tf.形状(img)[1]
crop_tl=tf.stack([
tf.cond(tl[0]<0,lambda:tf.constant(0,dtype=tf.int32),lambda:tl[0]),
tf.cond(tl[1]<0,lambda:tf.constant(0,dtype=tf.int32),lambda:tl[1]))
作物br=tf.stack([
tf.cond(br[0]>高度,λ:高度,λ:br[0]),
tf.cond(br[1]>width,lambda:width,lambda:br[1]))
裁剪=tf.image.crop\u到\u边界\u框(
img,
crop_tl[0],
crop_tl[1],
裁剪br[0]-裁剪tl[1],
作物\u br[1]-作物\u tl[1])
new_tl=裁剪_tl-tl
新建\u br=作物\u br-tl
#错误:
new_img=tf.zeros((body_size,body_size,tf.constant(3)),dtype=tf.float32)
新建图片组[新建图片组[0]:新建图片组[0]、新建图片组[1]:新建图片组[1]。分配(裁剪)
返回tf.image.resize(新图片,(分辨率,分辨率))

编辑:完整堆栈跟踪

---------------------------------------------------------------------------
NotImplementedError回溯(最后一次调用)
在里面
8     # ...
9
--->10 ds2.地图(预编程)
映射中的~/Documents/projects/hpe/venv/lib/python3.8/site-packages/tensorflow/python/data/ops/dataset\u ops.py(self、map\u func、num\u parallel\u调用、确定性)
1923 warnings.warn(“deterministic”参数无效,除非”
1924“`num_parallel_calls`参数已指定。”)
->1925返回MapDataset(self,map_func,preserve_cardinality=True)
1926年其他:
1927返回ParallelMapDataset(
~/Documents/projects/hpe/venv/lib/python3.8/site-packages/tensorflow/python/data/ops/dataset\u ops.py in\uuuuuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu(self,输入数据集,映射函数,使用内部操作并行,保留基数,使用遗留函数)
4481 self._use_inter_op_parallelism=use_inter_op_parallelism
4482 self.\u preserve\u cardinality=preserve\u cardinality
->4483自映射函数=StructuredFunctionWrapper(
4484 map_func,
4485 self.\u transformation\u name(),
~/Documents/projects/hpe/venv/lib/python3.8/site-packages/tensorflow/python/data/ops/dataset\u ops.py in\uuuuu init\uuuuuuuuuu(self、func、transformation\u name、dataset、input\u类、input\u形状、input\u类型、input\u结构、将\u添加到图中、使用\u legacy\u函数、defun\u kwargs)
3710 resource_tracker=tracking.ResourceTracker()
3711带有跟踪。资源跟踪者范围(资源跟踪者):
->3712自身功能=fn工厂()
3713#在急切模式下没有可添加的图形。
3714将_添加到_图&=非上下文。急切地执行_()
获取具体函数(self,*args,**kwargs)中的~/Documents/projects/hpe/venv/lib/python3.8/site-packages/tensorflow/python/eager/function.py
3132或'tf.Tensor'或'tf.TensorSpec'。
3133     """
->3134图形\函数=自我。\获取\具体\函数\垃圾\收集(
3135*args,**kwargs)
3136 graph_function._garbage_collector.release()35; pylint:disable=受保护的访问
~/Documents/projects/hpe/venv/lib/python3.8/site-packages/tensorflow/python/eager/function.py in\u get\u concrete\u function\u garbage\u collected(self,*args,**kwargs)
3098 args,kwargs=无,无
3099带自锁:
->3100图形函数,可以定义函数(args,kwargs)
3101 seen_names=set()
3102 captured=object_identity.ObjectIdentitySet(
~/Documents/projects/hpe/venv/lib/python3.8/site-packages/tensorflow/python/eager/function.py在函数(self、args、kwargs)中
3442
3443自.\u函数\u缓存.missed.add(调用上下文\u键)
->3444图形函数=self.\u创建图形函数(args,kwargs)
3445 self.\u function\u cache.primary[cache\u key]=图形函数