首頁 後端開發 Python教學 TensorFlow實現隨機訓練和批量訓練的方法

TensorFlow實現隨機訓練和批量訓練的方法

Apr 28, 2018 am 10:00 AM
tensorflow 大量 訓練

本篇文章主要介紹了TensorFlow實現隨機訓練和批量訓練的方法,現在分享給大家,也給大家做個參考。一起來看看吧

TensorFlow更新模型變數。它能一次操作一個數據點,也可以一次操作大量數據。一個訓練例子上的操作可能導致比較「古怪」的學習過程,但使用大批量的訓練會造成計算成本昂貴。到底選用哪一種訓練類型對機器學習演算法的收斂性非常關鍵。

為了TensorFlow計算變數梯度來讓反向傳播工作,我們必須測量一個或多個樣本的損失。

隨機訓練會一次隨機抽樣訓練資料和目標資料對完成訓練。另一個可選項是,一次大批量訓練取平均損失來進行梯度計算,批量訓練大小可以一次上擴到整個資料集。這裡將顯示如何擴展前面的迴歸演算法的例子—使用隨機訓練和批次訓練。

批量訓練和隨機訓練的不同之處在於它們的最佳化器方法和收斂。

# 随机训练和批量训练
#----------------------------------
#
# This python function illustrates two different training methods:
# batch and stochastic training. For each model, we will use
# a regression model that predicts one model variable.
import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf
from tensorflow.python.framework import ops
ops.reset_default_graph()
# 随机训练:
# Create graph
sess = tf.Session()
# 声明数据
x_vals = np.random.normal(1, 0.1, 100)
y_vals = np.repeat(10., 100)
x_data = tf.placeholder(shape=[1], dtype=tf.float32)
y_target = tf.placeholder(shape=[1], dtype=tf.float32)
# 声明变量 (one model parameter = A)
A = tf.Variable(tf.random_normal(shape=[1]))
# 增加操作到图
my_output = tf.multiply(x_data, A)
# 增加L2损失函数
loss = tf.square(my_output - y_target)
# 初始化变量
init = tf.global_variables_initializer()
sess.run(init)
# 声明优化器
my_opt = tf.train.GradientDescentOptimizer(0.02)
train_step = my_opt.minimize(loss)
loss_stochastic = []
# 运行迭代
for i in range(100):
 rand_index = np.random.choice(100)
 rand_x = [x_vals[rand_index]]
 rand_y = [y_vals[rand_index]]
 sess.run(train_step, feed_dict={x_data: rand_x, y_target: rand_y})
 if (i+1)%5==0:
  print('Step #' + str(i+1) + ' A = ' + str(sess.run(A)))
  temp_loss = sess.run(loss, feed_dict={x_data: rand_x, y_target: rand_y})
  print('Loss = ' + str(temp_loss))
  loss_stochastic.append(temp_loss)
# 批量训练:
# 重置计算图
ops.reset_default_graph()
sess = tf.Session()

# 声明批量大小
# 批量大小是指通过计算图一次传入多少训练数据
batch_size = 20

# 声明模型的数据、占位符
x_vals = np.random.normal(1, 0.1, 100)
y_vals = np.repeat(10., 100)
x_data = tf.placeholder(shape=[None, 1], dtype=tf.float32)
y_target = tf.placeholder(shape=[None, 1], dtype=tf.float32)

# 声明变量 (one model parameter = A)
A = tf.Variable(tf.random_normal(shape=[1,1]))

# 增加矩阵乘法操作(矩阵乘法不满足交换律)
my_output = tf.matmul(x_data, A)

# 增加损失函数
# 批量训练时损失函数是每个数据点L2损失的平均值
loss = tf.reduce_mean(tf.square(my_output - y_target))

# 初始化变量
init = tf.global_variables_initializer()
sess.run(init)

# 声明优化器
my_opt = tf.train.GradientDescentOptimizer(0.02)
train_step = my_opt.minimize(loss)

loss_batch = []
# 运行迭代
for i in range(100):
 rand_index = np.random.choice(100, size=batch_size)
 rand_x = np.transpose([x_vals[rand_index]])
 rand_y = np.transpose([y_vals[rand_index]])
 sess.run(train_step, feed_dict={x_data: rand_x, y_target: rand_y})
 if (i+1)%5==0:
  print('Step #' + str(i+1) + ' A = ' + str(sess.run(A)))
  temp_loss = sess.run(loss, feed_dict={x_data: rand_x, y_target: rand_y})
  print('Loss = ' + str(temp_loss))
  loss_batch.append(temp_loss)

plt.plot(range(0, 100, 5), loss_stochastic, 'b-', label='Stochastic Loss')
plt.plot(range(0, 100, 5), loss_batch, 'r--', label='Batch Loss, size=20')
plt.legend(loc='upper right', prop={'size': 11})
plt.show()
登入後複製

輸出:

#Step #5 A = [ 1.47604525]
Loss = [ 72.55678558]
Step #10 A = [ 3.01128507]
Loss = [ 48.22986221]
Step #15 A = [ 4.27042341]
Loss = [ 28.97912598]##Step #20 Aoss = [129843 = [Step#Loss. [ 16.44779968]
Step #25 A = [ 6.17473984]
Loss = [ 16.373312]
Step #30 A = [ 6.89866304]
Loss = [Step #30 A = [ 6.89866304]
Loss = [Step #30710546491 7.39849901]
Loss = [ 6.42773056]
Step #40 A = [ 7.84618378]
Loss = [ 5.92940331]
Step #45 A = [Loss = [ 5.92940331]
Step #45 A = [ 8.15109782#109782.109782.209782.109782.# #Step #50 A = [ 8.54818344]
Loss = [ 7.11651039]
Step #55 A = [ 8.82354641]
Loss = [ 1.47823763]##Step
#Loss. Loss = [ 3.08244276]
Step #65 A = [ 9.24868107]
Loss = [ 0.01143846]
Step #70 A = [ 9.36772251]##Loss#Step #70 A = [ 9.36772251]##Loss#Step. = [ 9.49171734]
Loss = [ 3.90913701]
Step #80 A = [ 9.6622715]
Loss = [ 4.80727625]
Step #85 A = [Loss = [ 4.80727625]
Step #85 A = [ 9.7378692625]
Step #85 A = [ 9.7378699.378693.
Step #90 A = [ 9.81853104]
Loss = [ 0.14876099]
Step #95 A = [ 9.90371323]
Loss = [ 0.01657014]##Step #10869. ##Loss = [ 0.444787]
Step #5 A = [[ 2.34371352]]
Loss = 58.766
Step #10 A = [[ 3.74766445]]
Loss = 38.4875# 15 A = [[ 4.88928795]]
Loss = 27.5632
Step #20 A = [[ 5.82038736]]
Loss = 17.9523
Step #25 A = [[ 6.589. = 13.3245
Step #30 A = [[ 7.20851326]]
Loss = 8.68099
Step #35 A = [[ 7.71694899]]
Loss = 4.60659## 8.1296711]]
Loss = 4.70107
Step #45 A = [[ 8.47107315]]
Loss = 3.28318
Step #50 A = [[ 8.74283409]#. Step #55 A = [[ 8.98811722]]
Loss = 2.66906
Step #60 A = [[ 9.18062305]]
Loss = 3.26207
Step #65 A = [[ 9.3165025]# #Loss = 2.55459
Step #70 A = [[ 9.43130589]]
Loss = 1.95839
Step #75 A = [[ 9.55670166]]
Loss = 1.46504#> [[ 9.6354847]]
Loss = 1.49021
Step #85 A = [[ 9.73470974]]
Loss = 1.53289
Step #90 A = [[ 9.77956581]#1.51. ##Step #95 A = [[ 9.83666706]]
Loss = 0.819207
Step #100 A = [[ 9.85569191]]
Loss = 1.2197












訓練類型

優點

#隨機訓練

脫離局部最小一般需更多次迭代才收斂耗費更多運算資源#相關推薦:淺談tensorflow1.0 池​​化層(pooling)和全連接層(dense)淺聊Tensorflow模型的儲存與復原載入
批次訓練 快速得到最小損失

以上是TensorFlow實現隨機訓練和批量訓練的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1272
29
C# 教程
1252
24
開源!超越ZoeDepth! DepthFM:快速且精確的單目深度估計! 開源!超越ZoeDepth! DepthFM:快速且精確的單目深度估計! Apr 03, 2024 pm 12:04 PM

0.這篇文章乾了啥?提出了DepthFM:一個多功能且快速的最先進的生成式單目深度估計模型。除了傳統的深度估計任務外,DepthFM還展示了在深度修復等下游任務中的最先進能力。 DepthFM效率高,可以在少數推理步驟內合成深度圖。以下一起來閱讀這項工作~1.論文資訊標題:DepthFM:FastMonocularDepthEstimationwithFlowMatching作者:MingGui,JohannesS.Fischer,UlrichPrestel,PingchuanMa,Dmytr

拋棄編碼器-解碼器架構,用擴散模型做邊緣偵測效果更好,國防科大提出DiffusionEdge 拋棄編碼器-解碼器架構,用擴散模型做邊緣偵測效果更好,國防科大提出DiffusionEdge Feb 07, 2024 pm 10:12 PM

目前的深度邊緣檢測網路通常採用編碼器-解碼器架構,其中包含上下採樣模組,以更好地提取多層次的特性。然而,這種結構限制了網路輸出準確且細緻的邊緣檢測結果。針對這個問題,一篇AAAI2024的論文給了新的解決方案。論文題目:DiffusionEdge:DiffusionProbabilisticModelforCrispEdgeDetection作者:葉雲帆(國防科技大學),徐凱(國防科技大學),黃雨行(國防科技大學),易任嬌(國防科技大學),蔡志平(國防科技大學)論文連結:https ://ar

通義千問再開源,Qwen1.5帶來六種體量模型,表現超越GPT3.5 通義千問再開源,Qwen1.5帶來六種體量模型,表現超越GPT3.5 Feb 07, 2024 pm 10:15 PM

趕在春節前,通義千問大模型(Qwen)的1.5版上線了。今天上午,新版本的消息引發了AI社群關注。新版大機型包括六個型號尺寸:0.5B、1.8B、4B、7B、14B和72B。其中,最強版本的效能超越了GPT3.5和Mistral-Medium。此版本包含Base模型和Chat模型,並提供多語言支援。阿里通義千問團隊表示,相關技術也已經上線到了通義千問官網和通義千問App。除此之外,今天Qwen1.5的發布還有以下一些重點:支援32K上下文長度;開放了Base+Chat模型的checkpoint;

大模型也能切片,微軟SliceGPT讓LLAMA-2運算效率大增 大模型也能切片,微軟SliceGPT讓LLAMA-2運算效率大增 Jan 31, 2024 am 11:39 AM

大型語言模型(LLM)通常擁有數十億參數,經過數萬億token的資料訓練。然而,這樣的模型訓練和部署成本都非常昂貴。為了降低運算需求,人們常常採用各種模型壓縮技術。這些模型壓縮技術一般可分為四類:蒸餾、張量分解(包括低秩因式分解)、剪枝、量化。剪枝方法已經存在一段時間,但許多方法需要在剪枝後進行恢復微調(RFT)以保持性能,這使得整個過程成本高昂且難以擴展。蘇黎世聯邦理工學院和微軟的研究者提出了一個解決這個問題的方法,名為SliceGPT。此方法的核心思想是透過刪除權重矩陣中的行和列來降低網路的嵌

你好,電動Atlas!波士頓動力機器人復活,180度詭異動作嚇到馬斯克 你好,電動Atlas!波士頓動力機器人復活,180度詭異動作嚇到馬斯克 Apr 18, 2024 pm 07:58 PM

波士頓動力Atlas,正式進入電動機器人時代!昨天,液壓Atlas剛「含淚」退出歷史舞台,今天波士頓動力就宣布:電動Atlas上崗。看來,在商用人形機器人領域,波士頓動力是下定決心要跟特斯拉硬剛一把了。新影片放出後,短短十幾小時內,就已經有一百多萬觀看。舊人離去,新角色登場,這是歷史的必然。毫無疑問,今年是人形機器人的爆發年。網友銳評:機器人的進步,讓今年看起來像人類的開幕式動作、自由度遠超人類,但這真不是恐怖片?影片一開始,Atlas平靜地躺在地上,看起來應該是仰面朝天。接下來,讓人驚掉下巴

追趕Gemini Pro,提升推理、OCR能力的LLaVA-1.6太強了 追趕Gemini Pro,提升推理、OCR能力的LLaVA-1.6太強了 Feb 01, 2024 pm 04:51 PM

在去年4月,威斯康辛大學麥迪遜分校、微軟研究院和哥倫比亞大學的研究者們共同發布了LLaVA(LargeLanguageandVisionAssistant)。儘管LLaVA只是用一個小的多模態指令資料集進行訓練,但在一些樣本上展現了與GPT-4非常相似的推理結果。然後在10月,他們推出了LLaVA-1.5,透過對原始LLaVA進行簡單修改,在11個基準測試中刷新了SOTA。這次升級的結果非常令人振奮,為多模態AI助理領域帶來了新的突破。研究團隊宣布推出LLaVA-1.6版本,針對推理、OCR和

快手版Sora「可靈」開放測試:生成超120s視頻,更懂物理,複雜運動也能精準建模 快手版Sora「可靈」開放測試:生成超120s視頻,更懂物理,複雜運動也能精準建模 Jun 11, 2024 am 09:51 AM

什麼?瘋狂動物城被國產AI搬進現實了?與影片一同曝光的,是一款名為「可靈」全新國產影片生成大模型。 Sora利用了相似的技術路線,結合多項自研技術創新,生產的影片不僅運動幅度大且合理,還能模擬物理世界特性,具備強大的概念組合能力與想像。數據上看,可靈支持生成長達2分鐘的30fps的超長視頻,分辨率高達1080p,且支援多種寬高比。另外再劃個重點,可靈不是實驗室放出的Demo或影片結果演示,而是短影片領域頭部玩家快手推出的產品級應用。而且主打一個務實,不開空頭支票、發布即上線,可靈大模型已在快影

超級智能體生命力覺醒!可自我更新的AI來了,媽媽再也不用擔心資料瓶頸難題 超級智能體生命力覺醒!可自我更新的AI來了,媽媽再也不用擔心資料瓶頸難題 Apr 29, 2024 pm 06:55 PM

哭死啊,全球狂煉大模型,一網路的資料不夠用,根本不夠用。訓練模型搞得跟《飢餓遊戲》似的,全球AI研究者,都在苦惱怎麼才能餵飽這群資料大胃王。尤其在多模態任務中,這問題尤其突出。一籌莫展之際,來自人大系的初創團隊,用自家的新模型,率先在國內把「模型生成數據自己餵自己」變成了現實。而且還是理解側和生成側雙管齊下,兩側都能產生高品質、多模態的新數據,對模型本身進行數據反哺。模型是啥?中關村論壇上剛露面的多模態大模型Awaker1.0。團隊是誰?智子引擎。由人大高瓴人工智慧學院博士生高一鑷創立,高

See all articles