一、ReLU
torch.nn.ReLU(inplace=False)官網提供的API
其中inplace表示是否在對原始數據進行替換
由函數圖可以看出,負數通過ReLU之后會變成0,正數則不發生變化
例如:input = -1,若inplace = True,表示對原始輸入數據進行替換,當通過ReLU函數(負數輸出均為0)之后,input = 0
若inplace = False(默認),表示不對原始輸入數據進行替換,則需要通過另一個變量(例如output)來對ReLU函數的結果進行接收存儲,通過ReLU函數之后,output = 0,input = -1
二、ReLU函數使用
創建一個二維tensor數據,通過reshape轉換成(batch_size,channel,H,W)
類型數據格式
傳入僅含有ReLU的神經網絡中,運行結果可以看出,負數都變成了0,正數均保持不變
import torch
from torch import nninput = torch.tensor([[1,-0.7],[-0.8,2]])input = torch.reshape(input,(-1,1,2,2))print(input)
"""
tensor([[[[ 1.0000, -0.7000],[-0.8000, 2.0000]]]])
"""class Beyond(nn.Module):def __init__(self):super(Beyond,self).__init__()self.relu_1 = torch.nn.ReLU()def forward(self,input):output = self.relu_1(input)return outputbeyond = Beyond()
output = beyond(input)
print(output)
"""
tensor([[[[1., 0.],[0., 2.]]]])
"""
三、ReLU訓練CIFAR-10數據集上傳至tensorboard
import torch
import torchvision
from torch import nn
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriterdataset_test = torchvision.datasets.CIFAR10("CIFAR_10",train=False,transform=torchvision.transforms.ToTensor(),download=True)dataloader = DataLoader(dataset_test,batch_size=64)class Beyond(nn.Module):def __init__(self):super(Beyond,self).__init__()self.relu_1 = torch.nn.ReLU()def forward(self,input):output = self.relu_1(input)return outputwriter = SummaryWriter("y_log")beyond = Beyond()
i=0
for data in dataloader:imgs,targets = datawriter.add_images("input_ReLU",imgs,i)output = beyond(imgs)writer.add_images("output_ReLU",output,i)i = i + 1writer.close()
在Terminal下運行tensorboard --logdir=y_log --port=9999
,logdir為打開事件文件的路徑,port為指定端口打開;
通過指定端口9999進行打開tensorboard,若不設置port參數,默認通過6006端口進行打開。
點擊該鏈接或者復制鏈接到瀏覽器打開即可
四、Sigmoid
torch.nn.Sigmoid
五、Sigmoid函數使用
創建一個二維tensor數據,通過reshape轉換成(batch_size,channel,H,W)
類型數據格式
傳入僅含有Sigmoid的神經網絡中,代入Sigmodi公式即可得到相應返回結果
import torch
from torch import nninput = torch.tensor([[1,-0.7],[-0.8,2]])input = torch.reshape(input,(-1,1,2,2))print(input)
"""
tensor([[[[ 1.0000, -0.7000],[-0.8000, 2.0000]]]])
"""class Beyond(nn.Module):def __init__(self):super(Beyond,self).__init__()self.sigmoid_1 = torch.nn.Sigmoid()def forward(self,input):output = self.sigmoid_1(input)return outputbeyond = Beyond()
output = beyond(input)
print(output)
"""
tensor([[[[0.7311, 0.3318],[0.3100, 0.8808]]]])
"""
六、Sigmoid訓練CIFAR-10數據集上傳至tensorboard
import torch
import torchvision
from torch import nn
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriterdataset_test = torchvision.datasets.CIFAR10("CIFAR_10",train=False,transform=torchvision.transforms.ToTensor(),download=True)dataloader = DataLoader(dataset_test,batch_size=64)class Beyond(nn.Module):def __init__(self):super(Beyond,self).__init__()self.sigmoid_1 = torch.nn.Sigmoid()def forward(self,input):output = self.sigmoid_1(input)return outputwriter = SummaryWriter("y_log")beyond = Beyond()
i=0
for data in dataloader:imgs,targets = datawriter.add_images("input_Sigmoid",imgs,i)output = beyond(imgs)writer.add_images("output_Sigmoid",output,i)i = i + 1writer.close()
在Terminal下運行tensorboard --logdir=y_log --port=9999
,logdir為打開事件文件的路徑,port為指定端口打開;
通過指定端口9999進行打開tensorboard,若不設置port參數,默認通過6006端口進行打開。