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,那麼它代表了...