使用 tf.data.Dataset.from_tensor_slices 和一个具有动态大小的属性创建张量流
我有一个 pandas 数据框,其列是“bbox”,其值即 [[94.0, 58.0, 469.0, 362.0]]
。我想使用 tf.data.Dataset.from_tensor_slices 将此数据帧转换为自定义数据集。 我希望 bbox 元素的形状为 (None,4) 但它是使用形状 (1,4) tf.Tensor([[ 94. 58. 469. 362.]], shape=(1 , 4), dtype=float32)
我不知道我做错了什么。
我的数据集是使用以下代码创建的:
myimages = pd.DataFrame.from_dict(train_data).to_dict("list")
myimages = tf.data.Dataset.from_tensor_slices(myimages)
提前感谢大家的宝贵时间
I have a pandas dataframe and of its columns is "bbox" with value i.e. [[94.0, 58.0, 469.0, 362.0]]
. I want to convert this dataframe to a custom dataset with tf.data.Dataset.from_tensor_slices.
I want the bbox element to have a shape of (None,4) but it is created with shape (1,4) tf.Tensor([[ 94. 58. 469. 362.]], shape=(1, 4), dtype=float32)
and I don't know what I am doing wrong.
My dataset is created with this code:
myimages = pd.DataFrame.from_dict(train_data).to_dict("list")
myimages = tf.data.Dataset.from_tensor_slices(myimages)
Thanks everyone in advance for your time
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 tf.data.Dataset.map 和 tf.squeeze 来消除额外的维度:
You can just use
tf.data.Dataset.map
andtf.squeeze
to get rid of the extra dimension:张量的形状为
(1, 4)
,因为数据框中的bbox
列包含的元素是列表列表,而不是单个列表。要获得每个标签的
(4, )
形状,您可以通过索引每个 bbox 元素来修改数据框中bbox
列中的元素以获得第一个 bbox,并将其插入到数据框中,如下所示:The shape of the tensor is
(1, 4)
since thebbox
column in your dataframe contains elements that are a list of lists, not a single list.To get a shape of
(4, )
for each label, you can modify the elements in thebbox
column in your dataframe by indexing each bbox element to obtain the first bbox, and inserting it into the dataframe like so: