Tensorflow从csv创建一个tfrecords文件

Nit*_*tro 12 python tensorflow

我正在尝试将一个csv文件(所有列都是浮点数)写入tfrecords文件,然后将它们读回来.我看到的所有示例都打包了csv列,然后直接将它提供给sess.run(),但我无法弄清楚如何将特征列和标签列写入tfrecord.我怎么能这样做?

sta*_*ndy 31

您将需要一个单独的脚本来将您的csv文件转换为TFRecords.

想象一下,你有一个带有以下标题的CSV:

feature_1, feature_2, ..., feature_n, label
Run Code Online (Sandbox Code Playgroud)

您需要使用类似的方式读取CSV pandas,tf.train.Example手动构造,然后将其写入文件TFRecordWriter

csv = pandas.read_csv("your.csv").values
with tf.python_io.TFRecordWriter("csv.tfrecords") as writer:
    for row in csv:
        features, label = row[:-1], row[-1]
        example = tf.train.Example()
        example.features.feature["features"].float_list.value.extend(features)
        example.features.feature["label"].int64_list.value.append(label)
        writer.write(example.SerializeToString())
Run Code Online (Sandbox Code Playgroud)

  • 对于 TF 2.0,请使用 tf.io.TFRecordWriter() 代替 (3认同)

Nij*_*lai 6

上述解决方案在我的情况下不起作用。另一种读取 csv 文件并创建 tfRecord 的方法如下所示:

特征集列名称是:Sl.No:,Time,Height,Width,Mean,Std,Variance,Non-homogeneity,PixelCount,contourCount,Class。

我们从 dataset.csv 中获得的示例特征:

特征= [5, 'D', 268, 497, 13.706, 863.4939, 29.385, 0.0427, 39675, 10]

标签:中

import pandas as pd
import tensorflow as tf

def create_tf_example(features, label):

    tf_example = tf.train.Example(features=tf.train.Features(feature={
        'Time': tf.train.Feature(bytes_list=tf.train.BytesList(value=[features[1].encode('utf-8')])),
        'Height':tf.train.Feature(int64_list=tf.train.Int64List(value=[features[2]])),
        'Width':tf.train.Feature(int64_list=tf.train.Int64List(value=[features[3]])),
        'Mean':tf.train.Feature(float_list=tf.train.FloatList(value=[features[4]])),
        'Std':tf.train.Feature(float_list=tf.train.FloatList(value=[features[5]])),
        'Variance':tf.train.Feature(float_list=tf.train.FloatList(value=[features[6]])),
        'Non-homogeneity':tf.train.Feature(float_list=tf.train.FloatList(value=[features[7]])),
        'PixelCount':tf.train.Feature(int64_list=tf.train.Int64List(value=[features[8]])),
        'contourCount':tf.train.Feature(int64_list=tf.train.Int64List(value=[features[9]])),
        'Class':tf.train.Feature(bytes_list=tf.train.BytesList(value=[label.encode('utf-8')])),
    }))
    return tf_example

csv = pd.read_csv("dataset.csv").values
with tf.python_io.TFRecordWriter("dataset.tfrecords") as writer:
  for row in csv:
     features, label = row[:-1], row[-1]
     print features, label
     example = create_tf_example(features, label)
     writer.write(example.SerializeToString())
writer.close()
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请单击此处。这对我有用,希望它有用。