Как читать CSV в TensorFlow?

1

Я просто начинаю использовать тензорный поток. Я пытаюсь читать файл csv в тензорном потоке. Это пример, который я нашел в Интернете:

filename_queue = tf.train.string_input_producer(["d:/Feng/LP/tensorflowtrydata.csv"])
reader = tf.TextLineReader()
key, value = reader.read(filename_queue)
record_defaults = [[1.0], [1.0], [1.0], [1.0], ["Null"]] 
col1, col2, col3, col4, col5 = tf.decode_csv(value,record_defaults=record_defaults) 
features = tf.stack([col1, col2, col3, col4])
with tf.Session() as sess:
    coord = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(coord=coord)
    for i in range(200):
        example, label = sess.run([features, col5])
        print (example,col5)
    coord.request_stop()
    coord.join(threads)

Но у меня есть ошибка:

InvalidArgumentError (see above for traceback): Field 0 in record 0 is not a valid float: Sepal.Length
 [[Node: DecodeCSV_5 = DecodeCSV[OUT_TYPE=[DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_STRING], field_delim=",", na_value="", use_quote_delim=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](ReaderReadV2_3:1, DecodeCSV_5/record_defaults_0, DecodeCSV_5/record_defaults_0, DecodeCSV_5/record_defaults_0, DecodeCSV_5/record_defaults_0, DecodeCSV_5/record_defaults_4)]]

Данные - набор диафрагмы. Это выглядит как:

iris.head()
   Sepal.Length  Sepal.Width  Petal.Length  Petal.Width Species
0           5.1          3.5           1.4          0.2  setosa
1           4.9          3.0           1.4          0.2  setosa
2           4.7          3.2           1.3          0.2  setosa
3           4.6          3.1           1.5          0.2  setosa
4           5.0          3.6           1.4          0.2  setosa
iris.dtypes
Sepal.Length    float64
Sepal.Width     float64
Petal.Length    float64
Petal.Width     float64
Species          object

Вы можете видеть, что в информации об ошибке говорилось, что это не действительный float. Но все данные - float64.

Я действительно новичок в тензорном потоке. Я даже не знаю, с чего начать. Итак, может ли кто-нибудь помочь мне здесь? dtype: объект

Теги:
tensorflow
csv
input

1 ответ

2
Лучший ответ

Путаница в том, что iris.head() предоставляет первые 5 строк df ПОСЛЕ заголовка. Принимая во внимание, что в тензорном потоке, как вы можете видеть в строке ошибки: Field 0 in record 0 is not a valid float: Sepal.Length, заголовок не обрабатывается автоматически, и, таким образом, Sepal.Length вызывает проблему.

Вы можете использовать pandas.read_csv для первого импорта файла, а затем преобразовать его в любой тензорный поток или использовать некоторые параметры:

reader = tf.TextLineReader(skip_header_line=1)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню