Pyrorch MNIST 使用不同優化器

2021-10-09 15:12:57 字數 2495 閱讀 4451

import torch.nn.functional as f #選擇啟用函式

import torch.optim as optim #選擇優化器

import matplotlib.pyplot as plt

#準備資料

batch_size=64

trans=transforms.compose([

transforms.totensor(),

transforms.normalize((0.1307,),(0.3081,))])

#資料載入

train_dataset=datasets.mnist(root='../mnnist/mnist/',train=true,download=true,transform=trans)

train_loader=dataloader(train_dataset,shuffle=true,batch_size=batch_size)

test_dataset=datasets.mnist(root='../mnnist/mnist/',train=false,download=true,transform=trans)

test_loader=dataloader(test_dataset,shuffle=true,batch_size=batch_size)

class net(torch.nn.module):

def __init__(self):

super(net, self).__init__()

self.linear1 = torch.nn.linear(784, 512)

self.linear2 = torch.nn.linear(512, 64)

self.linear3 = torch.nn.linear(64, 10)

def forward(self, x):

x = x.view(-1, 784)

x = f.relu(self.linear1(x))

x = f.relu(self.linear2(x))

x = self.linear3(x) #最後輸出不用進入線性層

return x

model=net()

x=criterion=torch.nn.crossentropyloss() #計算損失

optimizer=optim.sgd(model.parameters(),lr=0.01,momentum=0.5) #momentum帶衝量的???

def train(epoch):

running_loss=0.0

for batch_idx,data in enumerate(train_loader,0):

input,targe=data

optimizer.zero_grad()

output=model(input)

loss=criterion(output,targe)

loss.backward()

optimizer.step()

running_loss+=loss.item() #計算輸出

if batch_idx%300==299:

print("[%d,%d] loss: %.4f" % (epoch+1,batch_idx+1,running_loss/300))

running_loss=0

def test():

correct=0

total=0

with torch.no_grad():

for data in test_loader:

images,labels=data

outputs=model(images)

_,predicted=torch.max(outputs.data,dim=1) #資料和資料下標

total+=labels.size(0) # n*1 0即為數量

correct+=(predicted==labels).sum().item()

print("accuracy on test set: %d %%" % (100*correct/total))

if __name__=='__main__':

for epoch in range(1):

train(epoch)

test()

plt.plot(x, label='train_loss')

plt.title('train_loss')

plt.show()

MVC分頁使用(不使用控制項)

分頁是專案開發中最常用的功能 四要素 1.總資料數量 totalcount 2.總頁碼 pagecount 3 當前頁碼 pageindex 4 每頁顯示的資料數量 pagesize 分頁在專案中肯定是不止乙個頁面去使用的,所以效率方面應該將分頁的方法寫入 common共用的類方法中,而這個成員變數...

vi使用 不斷更新

1.刪除操作 命令模式使用 x刪除游標處的單個字元 dd刪除游標所在行 dw刪除當前字元到單詞尾包括空格的所有字元 x例如3x刪除游標處向右的三個字元 dd例如3dd從當前行開始向下刪除三行文字 2.撤銷操作 u命令取消最近一次的操作,可以使用多次來恢復原有的操作 u取消所有操作 ctrl r可以恢...

mysql使用(不適用)索引

表的主關鍵字 表的字段唯一約束 直接條件查詢的字段 查詢中與其它表關聯的字段 查詢中排序的字段 查詢中統計或分組統計的字段 不建或少建索引 表記錄太少 採用索引去訪問記錄的話,首先需訪問索引表,再通過索引表訪問資料表,一般索引表與資料表不在同乙個資料塊,這種情況下至少要往返讀取資料塊兩次,而不用索引...