@@ -21,7 +21,7 @@ GPU 和 TPU 可以从根本上减少执行单个训练步骤所需的时间。
21
21
22
22
使用[ ` tf.estimator.Estimator ` ] ( https://www.tensorflow.org/api_docs/python/tf/estimator/Estimator ) API 时,前两个阶段(提取和转换)在` input_fn ` 传递给[ ` tf.estimator.Estimator.train ` ] ( https://www.tensorflow.org/api_docs/python/tf/estimator/BaselineClassifier#train ) . 在代码中,这可能看起来像以下(幼稚的、顺序的)实现:
23
23
24
- ``` cpp
24
+ ``` python
25
25
def parse_fn (example ):
26
26
" Parse TFExample records and perform simple data augmentation."
27
27
example_fmt = {
@@ -66,14 +66,14 @@ API通过转换[`tf.data`](https://www.tensorflow.org/api_docs/python/tf/data)
66
66
67
67
要将此更改应用于我们正在运行的示例,请更改:
68
68
69
- ```cpp
69
+ ``` python
70
70
dataset = dataset.batch(batch_size = FLAGS .batch_size)
71
71
return dataset
72
72
```
73
73
74
74
为:
75
75
76
- ``` cpp
76
+ ``` python
77
77
dataset = dataset.batch(batch_size = FLAGS .batch_size)
78
78
dataset = dataset.prefetch(buffer_size = FLAGS .prefetch_buffer_size)
79
79
return dataset
@@ -93,28 +93,28 @@ return dataset
93
93
94
94
要将此更改应用于我们正在运行的示例,请更改:
95
95
96
- ``` cpp
96
+ ``` python
97
97
dataset = dataset.map(map_func = parse_fn)
98
98
```
99
99
100
100
为:
101
101
102
- ``` cpp
102
+ ``` python
103
103
dataset = dataset.map(map_func = parse_fn, num_parallel_calls = FLAGS .num_parallel_calls)
104
104
```
105
105
106
106
此外,如果您的批处理大小为数百或数千,您的流水线可能还会从并行创建批处理中受益。为此,[ ` tf.data ` ] ( https://www.tensorflow.org/api_docs/python/tf/data ) API 提供了[ ` tf.contrib.data.map_and_batch ` ] ( https://www.tensorflow.org/api_docs/python/tf/contrib/data/map_and_batch ) 转换,它有效地“融合”了地图和批量转换。
107
107
108
108
要将此更改应用于我们正在运行的示例,请更改:
109
109
110
- ``` cpp
110
+ ``` python
111
111
dataset = dataset.map(map_func = parse_fn, num_parallel_calls = FLAGS .num_parallel_calls)
112
112
dataset = dataset.batch(batch_size = FLAGS .batch_size)
113
113
```
114
114
115
115
为:
116
116
117
- ``` cpp
117
+ ``` python
118
118
dataset = dataset.apply(tf.contrib.data.map_and_batch(
119
119
map_func = parse_fn, batch_size = FLAGS .batch_size))
120
120
```
@@ -136,13 +136,13 @@ dataset = dataset.apply(tf.contrib.data.map_and_batch(
136
136
137
137
要将此更改应用于我们正在运行的示例,请更改:
138
138
139
- ``` cpp
139
+ ``` python
140
140
dataset = files.interleave(tf.data.TFRecordDataset)
141
141
```
142
142
143
143
为:
144
144
145
- ``` cpp
145
+ ``` python
146
146
dataset = files.apply(tf.contrib.data.parallel_interleave(
147
147
tf.data.TFRecordDataset, cycle_length = FLAGS .num_parallel_readers))
148
148
```
@@ -186,4 +186,4 @@ dataset = files.apply(tf.contrib.data.parallel_interleave(
186
186
- 向量化传入转换的廉价用户定义函数,` map ` 以分摊与调度和执行函数相关的开销。
187
187
- 如果您的数据可以放入内存,请` cache ` 在第一个 epoch 期间使用转换将其缓存在内存中,以便后续 epoch 可以避免与读取、解析和转换相关的开销。
188
188
- 如果您的预处理增加了数据的大小,我们建议首先应用` interleave ` 、` prefetch ` 和` shuffle ` (如果可能)以减少内存使用量。
189
- - 我们建议在最好在应用` repeat ` 转换之前应用转换` shuffle ` ,理想情况下使用融合的` shuffle_and_repeat ` 转换。
189
+ - 我们建议在最好在应用` repeat ` 转换之前应用转换` shuffle ` ,理想情况下使用融合的` shuffle_and_repeat ` 转换。
0 commit comments