簡體   English   中英

如何在張量流中驗證神經網絡?

[英]how to validate neural network in tensorflow?

目前,我的神經網絡僅使用訓練數據集進行訓練,但我也想進行驗證,但我無法弄清楚該怎么做。 我應該在每個時期之后對整個驗證集進行測試嗎? 如果是,那么從測試中,我將獲得准確性,但是我也無法弄清楚該怎么做? 如何根據它調整參數? 我是否再次運行優化器? 在這種情況下,驗證集的結果如何影響它?

 optimiser = tf.train.RMSPropOptimizer(learning_rate=learning_rate).minimize(cost)

  # finally setup the initialisation operator
  init_op = tf.global_variables_initializer()

  train = ["/Users/User/project/data/train.tfrecords"]
  dataset = d.getTrainData(train, trainSize, batch_size)
  iterator = dataset.make_initializable_iterator()
  x_batch, y_batch = iterator.get_next()


  validate = ["/Users/User/project/data/validate.tfrecords"]
  datasetV = d.getValData(validate, valSize, batch_size)
  iteratorV = datasetV.make_initializable_iterator()
  x_batch_V, y_batch_V = iteratorV.get_next()

with tf.Session() as sess:
        saver = tf.train.Saver()

        sess.run(init_op)
        e = 0
        for _ in range(epochs):
          dataset.shuffle(dataSize)
          e = e + 1
          sess.run(iterator.initializer)
          sess.run(iteratorV.initializer)
          i = 1
          try:

            while True:
              xy, z = sess.run((x_batch, y_batch))

              summary, _, c = sess.run([merged, optimiser, cost], 
                             feed_dict={x: xy, y: z})

              print ("cost of batch ", i, ": ", c)      
              train_writer.add_summary(summary, e)
              i = i + 1
          except tf.errors.OutOfRangeError:

            # Raised when we reach the end of the file.
            pass

          print ("end of epoch ", e)

        save_path = saver.save(sess, "/Users/User/project/model/model.ckpt")
        print("Model saved in file: %s" % save_path)

      return

(順便說一句我正在使用tensorflow 1.2版)感謝您的幫助!

您需要一個驗證集,該驗證集與訓練集不同。 如果您沒有,請考慮使用一些隨機過程拆分訓練集,以選擇隨機示例來選擇驗證集。 您代碼中的唯一區別應該是您不運行訓練操作(從sess.run刪除optimiser )。

至少要在培訓結束時運行一次,並檢查損失(以及可能對您重要的其他指標)是否足夠接近您從培訓中獲得的損失。 關鍵是要確保您沒有過度擬合訓練數據集。 如果您進行繪圖,則可能需要不定期運行以將其與訓練數據一起繪圖。 如果您想在模型開始過度擬合時盡早停止,查看圖有時會很有用。

如果要進行超參數調整,則需要對超參數進行各種更改來運行訓練,然后選擇組合,以在驗證數據集上為您提供最佳結果。 您應該在最后使用第三個數據集(測試數據集),以確保在進行超參數調整時不會意外過擬合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM