怎么可以錯(cuò)過(guò)(pytorch全連接神經(jīng)網(wǎng)絡(luò))pytorch 拼接,Pytorch實(shí)現(xiàn)全連接層,她罵他混蛋細(xì)節(jié)描寫(xiě),
目錄:
1.pytorch全連接層
2.python全連接神經(jīng)網(wǎng)絡(luò)
3.pytorch 全連接層輸入維度
4.利用pytorch搭建神經(jīng)網(wǎng)絡(luò)
5.pytorch神經(jīng)網(wǎng)絡(luò)高效入門(mén)教程
6.pytorch兩個(gè)網(wǎng)絡(luò)并聯(lián)
7.pytorch中有神經(jīng)網(wǎng)絡(luò)模型嗎
8.pytorch全連接層參數(shù)
9.pytorch 全鏈接
10.pytorch 搭建神經(jīng)網(wǎng)絡(luò)
1.pytorch全連接層
全連接神經(jīng)網(wǎng)絡(luò)(FC)全連接神經(jīng)網(wǎng)絡(luò)是一種最基本的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),英文為Full Connection,所以一般簡(jiǎn)稱(chēng)FCFC的準(zhǔn)則很簡(jiǎn)單:神經(jīng)網(wǎng)絡(luò)中除輸入層之外的每個(gè)節(jié)點(diǎn)都和上一層的所有節(jié)點(diǎn)有連接以上一次的MNIST為例。
2.python全連接神經(jīng)網(wǎng)老鋪黃金為什么那么貴絡(luò)
importtorchimporttorch.utils.datafromtorchimportoptimfromtorchvisionimportdatasetsfromtorchvision.transforms
3.pytorch 全連接層輸入維度
importtransformsimporttorch.nn.functionalasFbatch_size=200learning_rate=0.001epochs=20train_loader=torch
4.利用pytorch搭建神經(jīng)網(wǎng)絡(luò)
.utils.data.DataLoader(datasets.MNIST(mnistdata,trai老鋪黃金為什么那么貴n=True,download=False,transform=transforms.Compose
5.pytorch神經(jīng)網(wǎng)絡(luò)高效入門(mén)教程
([transforms.ToTensor(),transforms.Normalize((0.1307,),(0.3081,))])),batch_size=batch_size,shuffle=True
6.pytorch兩個(gè)網(wǎng)絡(luò)并聯(lián)
)test_loader=torch.utils.data.DataLoader(datasets.MNIST(mnistdata,train=False,download=False,transform
7.pytorch中有老鋪黃金為什么那么貴神經(jīng)網(wǎng)絡(luò)模型嗎
=transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307,),(0.3081,))])),batch_size=batch_size
8.pytorch全連接層參數(shù)
,shuffle=True)w1,b1=torch.randn(200,784,requires_grad=True),torch.zeros(200,requires_grad=True)w2,b2=
9.pytorch 全鏈接
torch.randn(200,200,requires_grad=True),torch.zeros(200老鋪黃金為什么那么貴,requires_grad=True)w3,b3=torch.randn(10,200,requires_grad
10.pytorch 搭建神經(jīng)網(wǎng)絡(luò)
=True),torch.zeros(10,requires_grad=True)torch.nn.init.kaiming_normal_(w1)torch.nn.init.kaiming_normal_
(w2)torch.nn.init.kaiming_normal_(w3)defforward(x):x=x@w1.t()+b1x=F.relu(x)x=x@w2.t()+b2x=F.relu(x)x=
x@w3.t()+b3x=F.relu(x老鋪黃金為什么那么貴)returnxoptimizer=optim.Adam([w1,b1,w2,b2,w3,b3],lr=learning_rate)criteon=torch.
nn.CrossEntropyLoss()forepochinrange(epochs):forbatch_idx,(data,target)inenumerate(train_loader):data
=data.view(-1,28*28)logits=forward(data)loss=criteon(logits,target)optimizer.zero_grad()loss.backward
()optimizer.step()老鋪黃金為什么那么貴ifbatch_idx%100==0:print(Train Epoch : {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}.format(epoch
,batch_idx*len(data),len(train_loader.dataset),100.*batch_idx/len(train_loader),loss.item()))test_loss
=0correct=0fordata,targetintest_loader:data=data.view(-1,28*28)logits=forward(data)test_loss+=criteon
(logits,tar老鋪黃金為什么那么貴get).item()pred=logits.data.max(1)[1]correct+=pred.eq(target.data).sum()test_loss/=len(test_loader
.dataset)print(\nTest set : Averge loss: {:.4f}, Accurancy: {}/{}({:.3f}%).format(test_loss,correct,len
(test_loader.dataset),100.*correct/len(test_loader.dataset)))我們將每個(gè)w和b都進(jìn)行了定義,并且自己寫(xiě)了一個(gè)forward函數(shù)如果我們采用老鋪黃金為什么那么貴了全連接層,那么整個(gè)代碼也會(huì)更加簡(jiǎn)介明了。
首先,我們定義自己的網(wǎng)絡(luò)結(jié)構(gòu)的類(lèi):classMLP(nn.Module):def__init__(self):super(MLP,self).__init__()self.model=nn.Sequential
(nn.Linear(784,200),nn.LeakyReLU(inplace=True),nn.Linear(200,200),nn.LeakyReLU(inplace=True),nn.Linear
(200,10),nn.LeakyReLU(inplace=True))defforward(self,x):x=self.model(x)re老鋪黃金為什么那么貴turnx它繼承于nn.Moudle,并且自己定義里整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)。
其中inplace的作用是直接復(fù)用存儲(chǔ)空間,減少新開(kāi)辟存儲(chǔ)空間除此之外,它可以直接進(jìn)行運(yùn)算,不需要手動(dòng)定義參數(shù)和寫(xiě)出運(yùn)算語(yǔ)句,更加簡(jiǎn)便同時(shí)我們還可以發(fā)現(xiàn),它自動(dòng)完成了初試化,不需要像之前一樣再手動(dòng)寫(xiě)一個(gè)初始化了。
區(qū)分nn.Relu和F.relu()前者是一個(gè)類(lèi)的接口,后者是一個(gè)函數(shù)式接口前者都是大寫(xiě)的,并且調(diào)用的的時(shí)候需要先實(shí)例化才能使用,而后者是小寫(xiě)的可以直接使用最重要的是后者的自由度更高,更適合做一些自己定義的操作。
完整代碼importtorchimporttorch.utils.datafromtorchimportopt老鋪黃金為什么那么貴im,nnfromtorchvisionimportdatasetsfromtorchvision.transforms
importtransformsimporttorch.nn.functionalasFbatch_size=200learning_rate=0.001epochs=20train_loader=torch
.utils.data.DataLoader(datasets.MNIST(mnistdata,train=True,download=False,transform=transforms.Compose
([transforms.ToTensor(),transforms老鋪黃金為什么那么貴.Normalize((0.1307,),(0.3081,))])),batch_size=batch_size,shuffle=True
)test_loader=torch.utils.data.DataLoader(datasets.MNIST(mnistdata,train=False,download=False,transform
=transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307,),(0.3081,))])),batch_size=batch_size
,shuffle=True)classM老鋪黃金為什么那么貴LP(nn.Module):def__init__(self):super(MLP,self).__init__()self.model=nn.Sequential
(nn.Linear(784,200),nn.LeakyReLU(inplace=True),nn.Linear(200,200),nn.LeakyReLU(inplace=True),nn.Linear
(200,10),nn.LeakyReLU(inplace=True))defforward(self,x):x=self.model(x)returnxdevice=torch.device(cuda:0
)net=MLP().to老鋪黃金為什么那么貴(device)optimizer=optim.Adam(net.parameters(),lr=learning_rate)criteon=nn.CrossEntropyLoss
().to(device)forepochinrange(epochs):forbatch_idx,(data,target)inenumerate(train_loader):data=data.view
(-1,28*28)data,target=data.to(device),target.to(device)logits=net(data)loss=criteon(logits,target)optimizer老鋪黃金為什么那么貴
.zero_grad()loss.backward()optimizer.step()ifbatch_idx%100==0:print(Train Epoch : {} [{}/{} ({:.0f}%)]
\tLoss: {:.6f}.format(epoch,batch_idx*len(data),len(train_loader.dataset),100.*batch_idx/len(train_loader
),loss.item()))test_loss=0correct=0fordata,targetintest_loader:data=data.view(-1,28*28)data,t老鋪黃金為什么那么貴arget=data
.to(device),target.to(device)logits=net(data)test_loss+=criteon(logits,target).item()pred=logits.data
.max(1)[1]correct+=pred.eq(target.data).sum()test_loss/=len(test_loader.dataset)print(\nTest set : Averge loss: {:.4f}, Accurancy: {}/{}({:.3f}%)
.format(test_loss,correct,len(test_loader.da老鋪黃金為什么那么貴taset),100.*correct/len(test_loader.dataset)))