我只是开始使用张量流。我正在尝试在张量流中读取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
您可以看到错误信息表明它不是有效的浮点数。但是所有数据都是float64。
我真的是张量流的新手。我什至不知道从哪里开始尝试。所以,有人可以在这里帮助我吗? dtype:对象
答案 0 :(得分:2)
混乱之处在于iris.head()
提供了df AFTER 标头的前5行已处理。而在tensorflow中,您可以在错误行中看到:
Field 0 in record 0 is not a valid float: Sepal.Length
不会自动处理标头,因此字符串 Sepal.Length 会引起问题。
您可以使用pandas.read_csv
首先导入文件,然后将其转换为张量流所需的内容,或者使用类似以下的选项:
reader = tf.TextLineReader(skip_header_line=1)