抽象類:具有必須待實現(重寫)的方法的python類. 因此我們可以通過擴充套件這個抽象類的功能,建立子類來構造自定義資料集。
需要重寫-override的函式:
#這裡直接繼承了mnist類,mnist類也是繼承dataset類實現。
class fashionmnist(mnist):(
urls = [
'','',
'','',
])train_set = torchvision.datasets.fashionmnist(
root='./data'
,train=true
,download=true
,transform=transforms.compose([
transforms.totensor()
]))"""
#設定儲存路徑
#選擇訓練集,預設測試集
#通過torchvison.transforms對資料做變換
#開**會很快
"""
train_loader = torch.utils.data.dataloader(train_set, batch_size = 1000,shuffle = true,num_workers = 0)
#num_workers預設為0表示用主程序來裝載資料
# 注意:pytorch multiprocessing does not work on windows!!!因此在windows系統上此處必須設定為0,即只有乙個程序存在。
#資料成可訓練的pipeline最後只需要給三個入參:資料集,批次,是否打亂。
#batch_size: data size of per batch
"""batch_size小對訓練的影響:
1.很小比如為1,訓練**嚴重,不易收斂
2.增大,下山路線,開始變正確
3.繼續增大,已經足夠準確,不再變化
4.但是隨著batch_size增大,相同的epoch次數下,迭代次數變小,因此需要注意在增大batch_size的同時,增加epoch。不能增大了batch導致迭代次數明顯減少,會導致最優化效果變差。
"""
train_set.targets#每個的標籤
train_set.targets.bincount()
#統計每個標籤類別的數目
#用途:檢查是否有嚴重的類別不平衡問題,class imbalanace
sample = next(iter(train_set))
#iter和next都是python內建函式(既可以用在train_set,也可以用在封裝好的dataloader)
# iter返回迭代器物件, next獲取乙個迭代器元素
len(sample)
print(type(sample))
#從torchvision獲取的資料集每個sample樣式:(tentor(img),tensor(label))
image.shape
# torch.size([1, 28, 28])
plt.imshow(image.squeeze(), cmap="gray") # 因為plt.imshow對於單通道顯示格式是 h w
display_loader = torch.utils.data.dataloader(train_set, batch_size=10)
images, labels = next(iter(display_loader) # len(next(iter(...))) = 2
print('types:', type(images), type(labels))
# types: print('shapes:', images.shape, labels.shape)
# shapes: torch.size([10, 1, 28, 28]) torch.size([10])
#兩種視覺化資料集的方式
#1.torchvision.utils.make_grid()
grid = torchvision.utils.make_grid(images, nrow=10)
plt.figure(figsize=(15,15))
plt.imshow(np.transpose(grid, (1,2,0))) #plt.imshow(grid.permute(1,2,0))
#2.利用dataloader顯示
how_many_to_plot = 20
train_loader = torch.utils.data.dataloader(train_set, batch_size=1, shuffle=true)
plt.figure(figsize=(50,50))
for i, img_batch in enumerate(train_loader, start=1):
#enumerate(sequence,start=1):列舉出的就是(i,img_batch)形狀,如(1,a),(2,b), (3,c)
image, label = img_batch
plt.subplot(10,10,i)
plt.imshow(image.reshape(28,28), cmap='gray')
plt.axis('off')
plt.title(train_set.classes[label.item()], fontsize=28)
if (i >= how_many_to_plot): break
plt.show()
C lua準備工作
ubuntu源裡的lua是5.0的.而最新的是5.2.如果只是學習lua語法什麼的直接apt get就好了.不過如果想做c lua的嵌入工作.就只能自己下原始碼編譯了 步驟 1.依賴的庫 readline,ncurses 這兩個庫可以從網上下原始碼然後編譯安裝.這樣其實最好了 如果不嫌源裡的舊.其實...
單據準備工作
虛擬機器 uap studio nc home 單據開發 基於studio的 單開發。擴充套件開發 對 單進行夥伴級拓展。報表平台 基於 單的分組統計和交叉統計。輕量化 交通費報銷開發。報表平台 語義模型 自由報表 基於模型的開發 實體 列舉及他們之間的關係。實體屬性 資料型別 約束 與業務介面的對...
python flask 準備工作
1 1搭建虛擬環境 安裝虛擬環境 sudo pip install virtualenv 1 建立目錄存放虛擬環境 mkdir home virtualenvs 2 開啟 bashrc檔案,並新增如下 vim bashrc 開啟後新增 export workon home home virtuale...