最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

tensorflow 固定部分參數(shù)訓(xùn)練,只訓(xùn)練部分參數(shù)的實例

 更新時間:2020年01月20日 09:18:00   作者:董煎餅  
今天小編就為大家分享一篇tensorflow 固定部分參數(shù)訓(xùn)練,只訓(xùn)練部分參數(shù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在使用tensorflow來訓(xùn)練一個模型的時候,有時候需要依靠驗證集來判斷模型是否已經(jīng)過擬合,是否需要停止訓(xùn)練。

1.首先想到的是用tf.placeholder()載入不同的數(shù)據(jù)來進(jìn)行計算,比如

def inference(input_):
  """
  this is where you put your graph.
  the following is just an example.
  """
  
  conv1 = tf.layers.conv2d(input_)
 
  conv2 = tf.layers.conv2d(conv1)
 
  return conv2
 
 
input_ = tf.placeholder()
output = inference(input_)
...
calculate_loss_op = ...
train_op = ...
...
 
with tf.Session() as sess:
  sess.run([loss, train_op], feed_dict={input_: train_data})
 
  if validation == True:
    sess.run([loss], feed_dict={input_: validate_date})

這種方式很簡單,也很直接了然。

2.但是,如果處理的數(shù)據(jù)量很大的時候,使用 tf.placeholder() 來載入數(shù)據(jù)會嚴(yán)重地拖慢訓(xùn)練的進(jìn)度,因此,常用tfrecords文件來讀取數(shù)據(jù)。

此時,很容易想到,將不同的值傳入inference()函數(shù)中進(jìn)行計算。

train_batch, label_batch = decode_train()
val_train_batch, val_label_batch = decode_validation()
 
 
train_result = inference(train_batch)
...
loss = ..
train_op = ...
...
 
if validation == True:
  val_result = inference(val_train_batch)
  val_loss = ..
  
 
with tf.Session() as sess:
  sess.run([loss, train_op])
 
  if validation == True:
    sess.run([val_result, val_loss])

這種方式看似能夠直接調(diào)用inference()來對驗證數(shù)據(jù)進(jìn)行前向傳播計算,但是,實則會在原圖上添加上許多新的結(jié)點,這些結(jié)點的參數(shù)都是需要重新初始化的,也是就是說,驗證的時候并不是使用訓(xùn)練的權(quán)重。

3.用一個tf.placeholder來控制是否訓(xùn)練、驗證。

def inference(input_):
  ...
  ...
  ...
  
  return inference_result
 
 
train_batch, label_batch = decode_train()
val_batch, val_label = decode_validation()
 
is_training = tf.placeholder(tf.bool, shape=())
 
x = tf.cond(is_training, lambda: train_batch, lambda: val_batch)
y = tf.cond(is_training, lambda: train_label, lambda: val_label)
 
logits = inference(x)
loss = cal_loss(logits, y)
train_op = optimize(loss)
 
with tf.Session() as sess:
  
  loss, _ = sess.run([loss, train_op], feed_dict={is_training: True})
  
  if validation == True:
    loss = sess.run(loss, feed_dict={is_training: False})

使用這種方式就可以在一個大圖里創(chuàng)建一個分支條件,從而通過控制placeholder來控制是否進(jìn)行驗證。

以上這篇tensorflow 固定部分參數(shù)訓(xùn)練,只訓(xùn)練部分參數(shù)的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

凤台县| 彰化市| 宁夏| 廉江市| 米易县| 措美县| 灵石县| 山丹县| 和平县| 临朐县| 文水县| 凤山县| 文安县| 醴陵市| 乌审旗| 义马市| 石嘴山市| 鄯善县| 贡山| 遂溪县| 凤冈县| 尤溪县| 丹棱县| 藁城市| 芜湖市| 巴青县| 湖北省| 南阳市| 清水县| 综艺| 弥勒县| 海原县| 新和县| 遵义市| 永川市| 棋牌| 天全县| 武义县| 德阳市| 林甸县| 苍溪县|