日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

训练集(training)、验证集(validation)和测试集(test)

發(fā)布時(shí)間:2023/12/31 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 训练集(training)、验证集(validation)和测试集(test) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

0.什么是訓(xùn)練集、驗(yàn)證集和測(cè)試集?

  • 訓(xùn)練集(train):訓(xùn)練模型
  • 驗(yàn)證集(val):評(píng)估模型
  • 測(cè)試集(test):一旦找到了最佳參數(shù),就開(kāi)始最終訓(xùn)練

使用訓(xùn)練集訓(xùn)練多個(gè)網(wǎng)絡(luò)模型,再使用驗(yàn)證集測(cè)試這些網(wǎng)絡(luò),找到得分最高的那個(gè)網(wǎng)絡(luò)作為我們選擇的最佳網(wǎng)絡(luò),再將訓(xùn)練集和驗(yàn)證集合并,重新訓(xùn)練這個(gè)最佳網(wǎng)絡(luò),得到最佳網(wǎng)絡(luò)參數(shù)。

打個(gè)比方:我們現(xiàn)在有個(gè)任務(wù),但是解決這個(gè)任務(wù)的網(wǎng)絡(luò)有網(wǎng)絡(luò)A、網(wǎng)絡(luò)B和網(wǎng)絡(luò)C,如何找到效果最好的哪個(gè)?

  • 先拿train對(duì)三個(gè)網(wǎng)絡(luò)都進(jìn)行訓(xùn)練(用相同的train訓(xùn)練三個(gè)網(wǎng)絡(luò)),然后用validation來(lái)測(cè)試三個(gè)網(wǎng)絡(luò)(validation對(duì)三個(gè)網(wǎng)絡(luò)也是一樣的),我們發(fā)現(xiàn)網(wǎng)絡(luò)B的效果最好,所以我們認(rèn)為對(duì)于本任務(wù),網(wǎng)絡(luò)B的結(jié)構(gòu)是效果最好的。
  • 當(dāng)然我們現(xiàn)在訓(xùn)練的網(wǎng)絡(luò)都只是粗訓(xùn)練,現(xiàn)在我們要針對(duì)網(wǎng)絡(luò)B開(kāi)始精細(xì)訓(xùn)練:將train和validation合并組成新的train,現(xiàn)在我們有數(shù)據(jù)train和test,開(kāi)始針對(duì)B網(wǎng)絡(luò)精細(xì)訓(xùn)練了
  • 對(duì)于train、validation和test的區(qū)分有簡(jiǎn)單留出、K折驗(yàn)證和重復(fù)K折驗(yàn)證三種,具體如下:

    1. 簡(jiǎn)單留出驗(yàn)證的偽代碼

    num_validation_samples=10000 # 驗(yàn)證集樣本數(shù) np.random.shuffle(data) # 通常需要打亂數(shù)據(jù)calidation_data=data[:num_calidation_samples] # 定義驗(yàn)證集data=data[num_calidation_samples:] # 截取剩余數(shù)據(jù)給變量data training_data=data[:] # 定義訓(xùn)練集:相當(dāng)于換個(gè)名字,實(shí)屬疑惑,感覺(jué)走彎路model=get_model() model.train(training_data) # 用train訓(xùn)練model validation_score=model.evaluate(validation_data) # 用val驗(yàn)證得分

    現(xiàn)在假設(shè)你已經(jīng)選好了網(wǎng)絡(luò)模型,開(kāi)始訓(xùn)練最終模型

    model=get_model() model.train(np.concatenate([training_data,validation_data])) # concatenate是拼接Training和Validation為新的Training test_score=model.evaluate(test_data) # 再使用Test測(cè)試得分

    總結(jié)
    以上方法簡(jiǎn)單易理解,但是缺點(diǎn)也明顯:

    • 如果樣本數(shù)量太少,驗(yàn)證集和測(cè)試集更少,無(wú)法在統(tǒng)計(jì)學(xué)上代表數(shù)據(jù)
    • 劃分?jǐn)?shù)據(jù)前時(shí),進(jìn)行不同的隨機(jī)打亂則得到的模型性能差別可能很大

    解決以上問(wèn)題的方法有一下兩種:

    • K折驗(yàn)證
    • 重復(fù)的K折驗(yàn)證

    2. K折驗(yàn)證


    如上,當(dāng)我們不確定多個(gè)模型哪個(gè)更好時(shí),通過(guò)K折驗(yàn)證找到loss最小的。

    K折驗(yàn)證時(shí)將數(shù)據(jù)劃分為大小相同的K個(gè)分區(qū)。對(duì)于每個(gè)分區(qū)i,在剩余的K-1個(gè)分區(qū)上訓(xùn)練模型,然后再分區(qū)i上評(píng)估模型。最終分?jǐn)?shù)等于K個(gè)分?jǐn)?shù)的平均值。

    k=4 num_validation_samples=len(data)//k # 驗(yàn)計(jì)算得證集的樣本數(shù)np.random.shuffle(data) # 數(shù)據(jù)打亂validation_scores=[] # 儲(chǔ)存每折的驗(yàn)證集得分 for fold in range(k):validation_data=data[num_validation_samples * fold : num_validation_samples * (fold+1)] # 選擇驗(yàn)證集分區(qū)training_data=data[:num_validation_samples * fold]+data[num_validation_samples * (fold+1):] #剩余的作為訓(xùn)練集model=get_model()model.train(training_data)validation_acore=model.evaluate(validation_data)validation_acores.append(validation_acore) # 將該折的得分儲(chǔ)存到分?jǐn)?shù)列表中 validation_score=np.average(validation_scores) # 計(jì)算平均值:K折驗(yàn)證分?jǐn)?shù)的均值model=get_model() # 現(xiàn)在訓(xùn)練最終模型 model.train(data) test_score=model.evaluate(test_data)

    3. 重復(fù)K折驗(yàn)證

    如果可用數(shù)據(jù)相對(duì)較少,而你又需要盡可能精確評(píng)估模型,可以選擇帶有打亂數(shù)據(jù)的重復(fù)K折驗(yàn)證:多次使用K折驗(yàn)證,在每次使用K折驗(yàn)證前都先將數(shù)據(jù)打亂,最終分?jǐn)?shù)時(shí)每次K折驗(yàn)證分?jǐn)?shù)的均值(K折驗(yàn)證分?jǐn)?shù)又是每折的均值)。

    總結(jié)

    以上是生活随笔為你收集整理的训练集(training)、验证集(validation)和测试集(test)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。