【问题标题】:Convert Pandas Dataframe as Tensorflow dataset with 2D array as data将 Pandas Dataframe 转换为 TensorFlow 数据集,将二维数组作为数据
【发布时间】:2019-07-31 23:24:47
【问题描述】:

我已经构建了一个带有 2 列“数据”和“标签”的熊猫数据框。密集矩阵中的“数据”列和“标签”是整数类型。

data     object
label     int64

我的数据帧中的示例数据


                                                data   label
0  [[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]], [[[[5 5...      0
1  [[[[[0 0 4 4 1]]]], [[[[0 0 3 3 1]]]], [[[[4 3...      0
2  [[[[[0 0 4 1 2]]]], [[[[0 0 2 3 4]]]], [[[[4 2...      0
3  [[[[[0 0 1 2 5]]]], [[[[0 0 3 2 3]]]], [[[[1 3...      0
4  [[[[[0 0 2 5 5]]]], [[[[0 0 3 4 1]]]], [[[[2 3...      0

当我尝试将 Dataframe 转换为 Tensorflow 数据集时,它给了我一个错误。我提取的标签和数据如下

target = df.pop('label')
dataset = tf.data.Dataset.from_tensor_slices((df.values, target.values))

这给了我以下错误。

TypeError: Expected binary or unicode string, got matrix([[0, 5, 1, 4, 4],
        [5, 0, 5, 2, 4],
        [1, 5, 0, 0, 0],
        [4, 2, 0, 0, 0],
        [4, 4, 0, 0, 0]], dtype=int32)

如何将我的“数据”列转换为 TensorFlow 数据集?

【问题讨论】:

  • 您可以发布数据框的摘录吗?我很困惑你怎么能在熊猫数据框的一列中有一个矩阵。
  • @gorjan 我已经从我的数据框中更新了样本。请看一下
  • 可以print(df.values.shape)吗?
  • @gorjan,它的''(9, 2)''。
  • 也许你需要tf.data.Dataset.from_generator。可以参考Creating a tensorflow dataset that outputs a dict

标签: python-3.x pandas tensorflow


【解决方案1】:

问题可能出在您使用的 Tensorflow 版本上,我已使用 Tensorflow 版本 2.2.0 进行了尝试,下面是工作代码。

import tensorflow as tf
import pandas as pd
import numpy as np

创建与您相同的示例 DataFrame。

s = "[[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]]]"
df = pd.DataFrame({"data":s*9,"label":[1]*9})

DataFrame 形状:

df.values.shape
(9, 2) 

现在创建 TensorFlow 数据集:

target = df.pop('label')
dataset = tf.data.Dataset.from_tensor_slices((df.values, target.values)) 

结果:

for i in dataset.take(1):
  print(i)

(<tf.Tensor: shape=(1,), dtype=string, numpy=
array([b'[[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]]][[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]]][[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]]][[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]]][[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]]][[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]]][[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]]][[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]]][[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]],[[[[0 0 5 4 5]]]], [[[[0 0 5 1 4]]]]]'],
      dtype=object)>, <tf.Tensor: shape=(), dtype=int64, numpy=1>)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2019-05-05
    • 2019-10-19
    • 2018-07-22
    • 2021-01-12
    相关资源
    最近更新 更多