利用小trick加速tensorflow的訓練

2021-10-05 02:06:33 字數 1120 閱讀 3566

tensorflow ==1.13.1

1. tf.data並行讀取tfrecord資料

def parse_exp(example):

features = {}

""" tfrecord解析** """

return features

def input_fn(filenames = "./train_data/*.tfrecord", batch_size=128):

files = tf.data.dataset.list_files(filenames)

tf.data.tfrecorddataset(files), buffer_output_elements=batch_size*20, cycle_length=10))

dataset = dataset.shuffle(batch_size*4)

dataset = dataset.map(parse_exp, num_parallel_calls=8)

dataset = dataset.repeat().batch(batch_size).prefetch(1)

return dataset

2. 在進行分布式訓練時,使用tf.fixed_size_partitioner引數分割,對於有較大embedding計算的時候尤其有用,**如下:

def model_fn(features, mode, params):

""" 構建estimator模型 """

with tf.variable_scope("deviceid_embedding", partitioner=tf.fixed_size_partitioner(8, axis=0)):

deviceid_input = tf.feature_column.input_layer(features, params["deviceid"])

""" 構建自己的**邏輯 """

net = ...

output = tf.layers.dense(net, units=1)

return output

其中tf.fixed_size_partitioner(8, axis=0)的 8代表ps個數。

c 的矩陣乘法加速trick

最近讀rnnlm的源 發現其實現矩陣乘法時使用了乙個trick,這裡描述一下這個trick。首先是正常版的矩陣乘法 其實是矩陣乘向量 void matrixxvector float destvect,float srcmatrix,intsrcmatrix rownum,intsrcmatrix ...

深度學習小trick收集

首先,梯度消失與梯度 的根本原因是基於bp的反向傳播演算法 且上述的反向傳播錯誤小於1 4 總的來說就是,更新w和b的時候,更新的步長與learningrate成正比,當所處的層數越淺,每層的w的值和反向傳播錯誤的值乘的愈多,導致w和b更新的步長收到很大影響,最終導致梯度 或者梯度消失。這時候深度網...

語法上的小trick

雖然不寫建構函式也是可以的,但是可能會開翻車,所以還是寫上吧。提供三種寫法 使用的時候只用 注意,這裡的a i gg 3,3,3 的 gg 不能打括號,否則就是強制轉換了。inline char nc inline int read read 函式返回的就是讀入資訊。對於乙個迭代器it,那麼它代表了...