Python 在tensorflow中将csv行作为数组导入

Python 在tensorflow中将csv行作为数组导入,python,csv,tensorflow,data-import,Python,Csv,Tensorflow,Data Import,我有一个csv文件,其中包含大量N列:第一列包含标签,另一列N-1是我数据的数字表示(音乐录制的色度特征) 我的想法是将输入数据表示为数组。在实践中,我想要一个与计算机视觉中数据的标准表示形式相同的表示形式。由于我的数据存储在csv中,在输入序列函数的定义中,我需要一个csv解析器。我是这样做的 def parse_csv(line): columns = tf.decode_csv(line, record_defaults=DEFAULTS) # take a line at a

我有一个csv文件,其中包含大量
N
列:第一列包含标签,另一列
N-1
是我数据的数字表示(音乐录制的色度特征)

我的想法是将输入数据表示为数组。在实践中,我想要一个与计算机视觉中数据的标准表示形式相同的表示形式。由于我的数据存储在csv中,在输入序列函数的定义中,我需要一个csv解析器。我是这样做的

def parse_csv(line):
    columns = tf.decode_csv(line, record_defaults=DEFAULTS)  # take a line at a time
    features = {'songID': columns[0], 'x': columns[1:]}  # create a dictionary out of the features
    labels = features.pop('songID')  # define the label
    return features, labels


def train_input_fn(data_file=fp, batch_size=128):
    """Generate an input function for the Estimator."""

    # Extract lines from input files using the Dataset API.
    dataset = tf.data.TextLineDataset(data_file)
    dataset = dataset.map(parse_csv)
    dataset = dataset.shuffle(1_000_000).repeat().batch(batch_size)
    return dataset.make_one_shot_iterator().get_next()

但是,这会返回一个意义不大的错误:
AttributeError:“list”对象没有属性“get\u shape”
。我知道罪魁祸首是features dictionary中的
x
,但我不知道如何更正它,因为从根本上说,我还没有真正了解tensorflow的数据结构。

事实证明,功能需要是张量。然而,每一列本身就是一个张量,取
列[1::
会得到一个张量列表。为了创建存储
N-1
列信息的高维张量,应使用
tf.stack

features = {'songID': columns[0], 'x': tf.stack(columns[1:])}  # create a dictionary out of the features

事实证明,特征必须是张量。然而,每一列本身就是一个张量,取
列[1::
会得到一个张量列表。为了创建存储
N-1
列信息的高维张量,应使用
tf.stack

features = {'songID': columns[0], 'x': tf.stack(columns[1:])}  # create a dictionary out of the features
tf.stack应该解决这个问题

下面的线程中提供了完整的代码示例

tf.stack应该解决这个问题

下面的线程中提供了完整的代码示例