怎麼用pytorch對訓練集資料做十折交叉驗證

時間 2021-06-09 19:21:10

1樓:FUNNY AI

通過查詢資料發現PyTorch在對資料集的處理上,並沒有設定方便進行交叉驗證的API。在程式設計實踐中可以這麼完成k折交叉驗證:

通過切片的方式,將訓練集和驗證集分成了k份,訓練集擁有k-1份資料。

class

MyDataset

(data

.Dataset

):'''

資料集類繼承PyTorch的Dataset類,進行處理。

資料集以csv讀取為例。

'''def

__init__

(self

,root

,state

='Train',k

=0):'''初始化物件。

Args:

root: 存放資料的目錄。

state: 控制要讀取訓練集、驗證集、測試集。

k: 用於控制k折交叉驗證。

39;''

self

.root

=root

self

.state

=state

ifself

.state

=='Train'

:path

=root

+'train.csv'

self

.train_data=pd

.read_csv

(path

)self

.data=pd

.concat([

self

.train_data

[:int((k

%10)*

len(

self

.train_data)/

10)],

self

.train_data

[int((k

%10+1

)*len(

self

.train_data)/

10):]])

self

.data

=self

.data

.reset_index

(drop

=True)if

self

.state

=='Valid'

:path

=root

+'train.csv'

self

.train_data=pd

.read_csv

(path

)self

.data

=self

.train_data

[int((k

%10)*

len(

self

.train_data)/

10):

int((k%

10+1)

*len

(self

.train_data)/

10)]

self

.data

=self

.data

.reset_index

(drop

=True)if

self

.state

=='test'

:path

=root

+'test.csv'

self

.data=pd

.read_csv

(path)

pytorch,兩個網路聯合訓練,怎麼設計兩個損失分別對兩個網路進行反向傳播?

xaipxan 我猜你的意思應該是net1 net2兩個網路,如何同時反向傳播是吧。對於這個問題,我自己做過簡陋的實驗。x torch rand 2 3 net1 nn Linear 3 3 net2 nn Linear 3 3 a net1 x b net2 a tgt torch rand 2 ...

用划船機做hiit訓練計畫應該怎麼做?

清脂大冒險 首先要知道什麼是HIIT。HIIT訓練是高強度間歇性訓練方式,在一定時間內進行高強度訓練的同時要連續性完成動作達到訓練目的。提高心肺增加消耗的方法之一,增肌就算了。乙個簡易計畫 俯臥撐 捲腹 開合跳 划船 俯臥撐 蹲起 捲腹 划船。每個動作30秒,間歇15 30秒,做兩到三組 找個人監督...

洗面奶怎麼樣用才對?

啾啾美妝日記 潔面每天早晚各用一回,晚上用可清洗1天累積的髒東西汙垢,早晨用可清洗夜裡肌膚分泌出的油脂和髒東西,早晨用清水洗臉也是可的,潔面不要用多了,不然過度清潔只會讓肌膚的油脂分泌出會更旺盛,建議可根據膚質的不用來使用潔面。乾皮 晚上使用,早晨可不用 油皮 每天早晚都需使用 正確使用潔面步驟 1...