tf.io.decode_csv

將CSV記錄轉換爲tensor。 每列映射到一tensor。

語法:

tf.io.decode_csv(
    records, record_defaults, field_delim=',', use_quote_delim=True, na_value='',
    select_cols=None, name=None
)

常用參數:

records: string類型的tensor, 每個字符串都是csv中的一個記錄/行,所有記錄都應該具有相同的格式。

record_defaults:具有特定類型的Tensor對象列表。可接受的類型是float32,float64,int32,int64,string。

field_delim: 一個可選的字符串,默認爲“,”,分隔記錄中字段的字符分隔符。

返回:

tensor對象的列表。 具有與record_defaults相同的類型。 每個tensor將具有與記錄相同的shape。

異常:

ValueError: 如果任何參數格式不正確。

示例:

作用是解析csv文件,接下來舉例說明如何使用decode_csv來把一個由“,”分隔的csv字符串解析成各個值的。

1、

sample_str = '1,2,3,4,5'
record_defaults = [tf.constant(0, dtype=tf.int32)] * 5
parsed_fields = tf.io.decode_csv(sample_str, record_defaults)
print(parsed_fields)
[<tf.Tensor: id=24, shape=(), dtype=int32, numpy=1>, <tf.Tensor: id=25, shape=(), dtype=int32, numpy=2>, <tf.Tensor: id=26, shape=(), dtype=int32, numpy=3>, <tf.Tensor: id=27, shape=(), dtype=int32, numpy=4>, <tf.Tensor: id=28, shape=(), dtype=int32, numpy=5>]

2、

sample_str = '1,2,3,4,5'
record_defaults = [
    tf.constant(0, dtype=tf.int32),
    0,
    np.nan,
    "hello",
    tf.constant([])
]
parsed_fields = tf.io.decode_csv(sample_str, record_defaults)
print(parsed_fields)
[<tf.Tensor: id=35, shape=(), dtype=int32, numpy=1>, <tf.Tensor: id=36, shape=(), dtype=int32, numpy=2>, <tf.Tensor: id=37, shape=(), dtype=float32, numpy=3.0>, <tf.Tensor: id=38, shape=(), dtype=string, numpy=b'4'>, <tf.Tensor: id=39, shape=(), dtype=float32, numpy=5.0>]

3、給空值

record_defaults = [
    tf.constant(0, dtype=tf.int32),
    0,
    np.nan,
    "hello",
    tf.constant([])
]

try:
    parsed_fields = tf.io.decode_csv(',,,,', record_defaults)
except tf.errors.InvalidArgumentError as ex:
    print(ex)

 Field 4 is required but missing in record 0! [Op:DecodeCSV]

 4、給出相對於record_defaults更多的fields

record_defaults = [
    tf.constant(0, dtype=tf.int32),
    0,
    np.nan,
    "hello",
    tf.constant([])
]
try:
    parsed_fields = tf.io.decode_csv('1,2,3,4,5,6,7', record_defaults)
except tf.errors.InvalidArgumentError as ex:
    print(ex)
Expect 5 fields but have 7 in record 0 [Op:DecodeCSV]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章