![](/img/trans.png)
[英]Tensorflow: convert a `tf.data.Dataset` iterator to a Tensor
[英]Tensorflow tf.data.Dataset convert string tensor to float tensor
我想建立一個數據輸入管道來讀取邊界框信息。 因此,我有多個.txt
文件,它們在每行中存儲有關x
, y
, width
和height
,例如:
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_split
和tf.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.