激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 使用tensorflow DataSet實現高效加載變長文本輸入

使用tensorflow DataSet實現高效加載變長文本輸入

2020-04-08 19:09lyg5623 Python

今天小編就為大家分享一篇使用tensorflow DataSet實現高效加載變長文本輸入,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

DataSet是tensorflow 1.3版本推出的一個high-level的api,在1.3版本還只是處于測試階段,1.4版本已經正式推出。

在網上搜了一遍,發現關于使用DataSet加載文本的資料比較少,官方舉的例子只是csv格式的,要求csv文件中所有樣本必須具有相同的維度,也就是padding必須在寫入csv文件之前做掉,這會增加文件的大小。

經過一番折騰試驗,這里給出一個DataSet+TFRecords加載變長樣本的范例。

首先先把變長的數據寫入到TFRecords文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def writedata():
 xlist = [[1,2,3],[4,5,6,8]]
 ylist = [1,2]
 #這里的數據只是舉個例子來說明樣本的文本長度不一樣,第一個樣本3個詞標簽1,第二個樣本4個詞標簽2
 writer = tf.python_io.TFRecordWriter("train.tfrecords")
 for i in range(2):
  x = xlist[i]
  y = ylist[i]
  example = tf.train.Example(features=tf.train.Features(feature={
   "y": tf.train.Feature(int64_list=tf.train.Int64List(value=[y])),
   'x': tf.train.Feature(int64_list=tf.train.Int64List(value=x))
  }))
  writer.write(example.SerializeToString())
 writer.close()

然后用DataSet加載:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
feature_names = ['x']
 
def my_input_fn(file_path, perform_shuffle=False, repeat_count=1):
 def parse(example_proto):
  features = {"x": tf.VarLenFeature(tf.int64),
    "y": tf.FixedLenFeature([1], tf.int64)}
  parsed_features = tf.parse_single_example(example_proto, features)
  x = tf.sparse_tensor_to_dense(parsed_features["x"])
  x = tf.cast(x, tf.int32)
  x = dict(zip(feature_names, [x]))
  y = tf.cast(parsed_features["y"], tf.int32)
  return x, y
 
 dataset = (tf.contrib.data.TFRecordDataset(file_path)
    .map(parse))
 if perform_shuffle:
  dataset = dataset.shuffle(buffer_size=256)
 dataset = dataset.repeat(repeat_count)
 dataset = dataset.padded_batch(2, padded_shapes=({'x':[6]},[1])) #batch size為2,并且x按maxlen=6來做padding
 iterator = dataset.make_one_shot_iterator()
 batch_features, batch_labels = iterator.get_next()
 return batch_features, batch_labels
 
next_batch = my_input_fn('train.tfrecords', True)
init = tf.initialize_all_variables()
with tf.Session() as sess:
 sess.run(init)
 for i in range(1):
  xs, y =sess.run(next_batch)
  print(xs['x'])
  print(y)

注意變長的數據TFRecords解析要用VarLenFeature,然后用sparse_tensor_to_dense轉換。

以上這篇使用tensorflow DataSet實現高效加載變長文本輸入就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/lyg5623/article/details/78456915

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美电影在线观看 | 亚洲一区在线观看视频 | 伊人999| 久久99精品久久久久久秒播放器 | 国产日产久久久久久 | 欧美日韩在线免费观看 | 黄色电影免费网址 | 综合日韩av | 欧美性黄 | 欧美性生交xxxxx免费观看 | 欧美成年性h版影视中文字幕 | 一级啪啪片 | 91视频站| 精品久久久久久久久中文字幕 | 久久久久久久黄色片 | 国产在线观看免费视频软件 | 欧美一级黄| 欧美一级高清片_欧美高清aa | 免费国产之a视频 | 国产亚洲欧美视频 | 欧美性受xxxxxx黑人xyx性爽 | 亚洲最大的成人网 | 免费高清一级欧美片在线观看 | 免费a级毛片永久免费 | 久久人人爽人人爽人人片av高请 | 看免费5xxaaa毛片 | 在线成人免费观看视频 | 孕妇体内谢精满日本电影 | 久久综合久久综合久久 | 精品国产91久久久久久浪潮蜜月 | 色污视频 | 久草在线视频免费播放 | 亚洲码无人客一区二区三区 | 亚洲最黄视频 | 成人免费观看毛片 | 亚洲午夜免费电影 | 日本黄色网战 | 欧美成人免费小视频 | 国产精品一品二区三区四区18 | 夜班护士在线观看 | 国产精品视频一区二区三区综合 |