Tensorflow создайте файл tfrecords из csv

Я пытаюсь написать csv-файл (все столбцы являются поплавками) в файл tfrecords, а затем прочитать их обратно. Все примеры, которые я видел, упаковывают столбцы csv, а затем подают его в sess.запустите () напрямую, но я не могу понять, как записать столбцы объектов и столбец меток в tfrecord. Как я мог это сделать?

2 ответов


вам понадобится отдельный скрипт для конвертации вашего csv файла в TFRecords.

представьте, что у вас есть CSV-файл со следующим заголовком:

feature_1, feature_2, ..., feature_n, label

вам нужно прочитать 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())

def convert_to():
filename = os.path.join(wdir, 'ml-100k' + '.tfrecords')
print('Writing', filename)
with tf.python_io.TFRecordWriter(filename) as writer:
    with open("/Users/shishir/Documents/botconnect_Playground/tfRecords/ml-100k.train.rating", "r") as f:
        line = f.readline()
        while line != None and line != "":
            arr = line.split("\t")
            u, i, l  = int(arr[0]), int(arr[1]), int(arr[2])
            u_arr = np.reshape(u,[1]).astype('int64')
            i_arr = np.reshape(i,[1]).astype('int64')
            l_arr = np.reshape(l,[1]).astype('int64')
            example = tf.train.Example()
            example.features.feature["user"].int64_list.value.extend(u_arr)
            example.features.feature["item"].int64_list.value.extend(i_arr)
            example.features.feature["label"].int64_list.value.append(int(l_arr))
            writer.write(example.SerializeToString())
            line = f.readline()

Так что это мое решение и оно работает! Надеюсь, это поможет

Ура.