kaggle貓狗大戰

2021-09-19 03:53:14 字數 870 閱讀 2989

kaggle貓狗大戰

kaggle上的貓狗大戰,即對貓狗的分類**,沒有特徵資料,只有,所以只能運用神經網路對其訓練**。看了大量的kaggle上的公開例子,大多運用tensorflow或者keras建立神經網路,因為最近在學習torch,因此,想用torch建立卷積神經網路進行建模**。但整個過程遇到了很多坑,下面記錄總結一下自己在第一次做識別時的坑。

一、資料預處理

對於肯定要進行預處理,不能直接輸入模型,並且訓練資料中的大小不一樣,就用torchvision.datasets.imagefolder模組載入資料,但直接載入顯示檔案中沒有任何檔案,頓時懵逼,明明全是,為什麼會顯示沒有呢?查閱各種部落格,原來要分開變成資料夾,也就是把訓練集再分類,讀取資料後torch會對資料資料標籤自動分類標數。資料預處理期間花費大量的時間精力,但感覺很值得,因為理解了torch的資料處理的一些東西,對後期的識別有很大的幫助。但是考慮如何運用cv2庫或者pil庫對進行處理再用torchvision.datasets.imagefolder進行讀取呢?後續繼續研究。。。

二、網路搭建

建立cnn網路,直接用nn.model繼承類建立卷積網路,中間卷積層的引數資料比較難算,還沒有特別搞清楚,直接用網上的引數設定,或者用遷移學習,用比較著名的影象識別演算法。改變全連線層的引數,最後設定為2分類,效果也是比較好的。

訓練模型時如果用gpu要對網路設定cuda讓他成為gpu引數,還有variable建立變數時再引數後加.cuda()轉換資料,不然會出錯,對**結果也對tensor資料轉換為numpy資料如果cpu訓練的模型直接加.numpy(),如果gpu訓練的模型則先轉換為cpu資料再轉換numpy即加.cpu().numpy()。

此次貓狗大戰識別做了好幾天,實際應用和理論還是有些許脫節,**寫的比較爛就不貼**了。。。。。

洛谷 貓狗大戰

初見安 這裡是傳送門 洛谷p1489 貓狗大戰 乙個挺冷門的題啊 也蠻有意思的。把n個數劃分成兩部分,讓兩部分的數的總和的差值盡量小。其實一眼dp,但是要往正解的方向去想是有點點難度的 明顯我們確定乙個集合,另乙個集合也就可以確定了。思考暴力一點的做法 如果我們可以列舉乙個集合的所有可能性,是不是就...

貓狗大戰V1

matplotlib inline import numpy as np import os import matplotlib.pyplot as plt fnames np.array f train for f in sorted os.listdir train labels np.arra...

DP luoguP1489貓狗大戰

題目大意 給你乙個序列 長度小於等於200 你需要把它分成兩半而且兩個被分開的序列長度差不超過一 如果是偶數的話那麼就必須是一樣長咯 要求分成的兩個序列的總和差的絕對值最小 做題思路 1.既然是序列總和,而且分成兩半,那麼我為什麼不先預處理出一開始整個序列的和呢?2.既然是兩個序列的總和,那麼必然會...