學習整合學習方法以及交叉驗證情況下的模型整合
學會使用深度學習模型的整合學習
目的是提高**精度;
方法有:stacking、bagging、boosting等,
例如在機器學習中,對10個cnn模型可以使用如下方式進行整合:
對**的結果的概率值進行平均,然後解碼為具體字元;
對**的字元進行投票,得到最終字元。
在深度學習中,還有如下方法:
dropout可以作為訓練深度神經網路的一種技巧。在每個訓練批次中,通過隨機讓一部分的節點停止工作。同時在**的過程中讓所有的節點都其作用。
# 定義模型
class svhn_model1(nn.module):
def __init__(self):
super(svhn_model1, self).__init__(
)# cnn提取特徵模組
self.cnn = nn.sequential(
nn.conv2d(3, 16, kernel_size=
(3, 3), stride=
(2, 2)),
nn.relu(
), nn.dropout(0.25),
nn.maxpool2d(2),
nn.conv2d(16, 32, kernel_size=
(3, 3), stride=
(2, 2)),
nn.relu(
), nn.dropout(0.25),
nn.maxpool2d(2),
)# self.fc1 = nn.linear(32*3*7, 11)
self.fc2 = nn.linear(32*3*7, 11)
self.fc3 = nn.linear(32*3*7, 11)
self.fc4 = nn.linear(32*3*7, 11)
self.fc5 = nn.linear(32*3*7, 11)
self.fc6 = nn.linear(32*3*7, 11)
def forward(self, img):
feat = self.cnn(img)
feat = feat.view(feat.shape[0], -1)
c1 = self.fc1(feat)
c2 = self.fc2(feat)
c3 = self.fc3(feat)
c4 = self.fc4(feat)
c5 = self.fc5(feat)
c6 = self.fc6(feat)
return c1, c2, c3, c4, c5, c6
測試集資料擴增(test time augmentation,簡稱tta)也是常用的整合學習技巧
def predict(test_loader, model, tta=10):
model.eval(
) test_pred_tta = none
# tta 次數
for _ in range(tta):
test_pred =
with torch.no_grad(
): for i, (input, target)
in enumerate(test_loader):
c0, c1, c2, c3, c4, c5 = model(data[0]
) output = np.concatenate(
[c0.data.numpy(
), c1.data.numpy(
), c2.data.numpy(
), c3.data.numpy(
), c4.data.numpy(
), c5.data.numpy(
)], axis=1)
test_pred = np.vstack(test_pred)
if test_pred_tta is none:
test_pred_tta = test_pred
else:
test_pred_tta += test_pred
return test_pred_tta
使用cyclical learning rate進行訓練模型,並儲存精度比較好的一些checkopint,最後將多個checkpoint進行模型整合。
在不同的任務中可能會有不同的解決方案,不同思路的模型不僅可以互相借鑑,同時也可以修正最終的**結果。
在本次賽題中,可以從以下幾個思路對**結果進行後處理:
統計中每個位置字元出現的頻率,使用規則修正結果;
單獨訓練乙個字元長度**模型,用來**中字元個數,並修正結果。
深度學習模型做整合學習的各種方法,並以此次賽題為例講解了部分**。
需要注意以下幾點:
整合學習只能在一定程度上提高精度,並需要耗費較大的訓練時間,因此建議先使用提高單個模型的精度,再考慮整合學習過程;
具體的整合學習方法需要與驗證集劃分方法結合,dropout和tta在所有場景有可以起作用。
零基礎入門CV賽事 Task5 模型整合
本章講解的知識點包括 整合學習方法 深度學習中的整合學習和結果後處理思路。stacking先從初始資料集訓練出初級學習器 個體學習器 然後 生成 乙個新資料集用於訓練次級學習器 用於結合的學習器,也稱元學習器meta learner 新的資料集中,初級學習器的輸出被當作樣例輸入特徵。注 訓練階段,次...
零基礎入門CV賽事 Task5 模型整合
k means通常被稱為勞埃德演算法,這在資料聚類中是最經典的,也是相對容易理解的模型。演算法執行的過程分為4個階段。1.首先,隨機設k個特徵空間內的點作為初始的聚類中心。2.然後,對於根據每個資料的特徵向量,從k個聚類中心中尋找距離最近的乙個,並且把該資料標記為這個聚類中心。3.接著,在所有的資料...
Datawhale 零基礎入門CV賽事
本章將會講解卷積神經網路 convolutional neural network,cnn 的常見層,並從頭搭建乙個字元識別模型。學習cnn基礎和原理 使用pytorch框架構建cnn模型,並完成訓練 卷積神經網路 簡稱cnn 是一類特殊的人工神經網路,是深度學習中重要的乙個分支。cnn在很多領域都...