簡體   English   中英

Tensorflow tf.data.Dataset將字符串張量轉換為浮點張量

[英]Tensorflow tf.data.Dataset convert string tensor to float tensor

我想建立一個數據輸入管道來讀取邊界框信息。 因此,我有多個.txt文件,它們在每行中存儲有關xywidthheight ,例如:

952  607    9   18
947 1176   14   12
937  228   17   22
895 1118   66   53
804  596   12   13
651  722   13    8
667  306   28   51
586 1148   20   32
231  280   33   31
859  629  102  172
806  486  155  111
487  506   55   69
263  476  372  339
4  589  114  106
273  724  164  192
4    4  350  292

所有文件名都保存在list

filenames_bb = input_tools.get_required_filenames(args.dataset_dir, "train", params)

我使用tf.data.Dataset構建輸入管道

dataset = tf.data.Dataset.from_tensor_slices(filenames_bb)
dataset = dataset.map(parse_fnc, params.num_parallel_calls)

現在我的問題是如何實現parse_fnc 我想要的是形狀為[batch_size, number_of_bounding_boxes, 4]的張量。 當前, parse_fnc如下所示:

def parse_fnc(filenames):
    bb = tf.read_file(filenames)

    return bb

它返回shape=(?,)dtype=string的張量,但是如何將其轉換為具有所需尺寸的float張量?

您可以通過調用tf.TextLineDataset來創建包含一個或多個文本文件的行的數據集。 然后,您可以使用tf.string_splittf.string_to_number獲得浮點值。

def parse_fnc(line):
    string_vals = tf.string_split([line]).values
    return tf.string_to_number(string_vals, tf.float32)

string_ds = tf.data.TextLineDataset('./data.txt')
float_ds = string_ds.map(map_func=parse_fnc)

本示例從一個文件創建數據集,但是您可以提供多個文本文件作為輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM