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()
Так что это мое решение и оно работает! Надеюсь, это поможет
Ура.