神经网络-非线性激活、线性层及一些其他层

一、非线性激活

主要是为了给神经网络中引入一些非线性特质,常见的有RELU、Sigmoid。

# RELU

(1)查看官方文档

 (2)代码示例

由(1)中图像知:当input小于0时,output取0;当input大于0时,output=input

#Sigmoid

(1)查看官方文档

(2)代码示例

 代码修改:

import torch
import torchvision.datasets
from torch import nn
from torch.nn import ReLU, Sigmoid
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

input = torch.tensor([[1, -0.5],
                      [-1, 3]])

output = torch.reshape(input,(-1, 1, 2, 2))
print(output.shape)


dataset = torchvision.datasets.CIFAR10("./dataset", train=True, download=True, transform=torchvision.transforms.ToTensor())
dataloader = DataLoader(dataset, batch_size=64)


class Swagkg(nn.Module):
    def __init__(self):
        super(Swagkg, self).__init__()
        #self.relu1 = ReLU()
        self.sigmoid1 = Sigmoid()

    def forward(self, input):
        # output = self.relu1(input)
        output = self.sigmoid1(input)
        return output


swagkg = Swagkg()
# output = swagkg(input)
# print(output)

writer = SummaryWriter("logs_sigmoid")
step = 0
for data in dataloader:
    imgs, targets =data
    writer.add_images("input", imgs, step)
    output = swagkg(imgs)
    writer.add_images("output", output, step)
    step += 1

writer.close()

运行代码:

 查看图像,有的不显示,且step从3开始:

 解决:运行时多加一个“--samples_per_plugin=images=1000”,即使用“tensorboard --logdir=C:\Users\zzu\PycharmProjects\pythonProject\logs_sigmoid --samples_per_plugin=images=1000”

结果显示:

 非线性变换的主要目的:在网络中引入一些非线性特征,非线性越多,才能训练出符合各种曲线或者符合各自特征的一个模型,提高模型的一个泛化能力。

 二、其他种类的层

   #正则化层(normalization):可以加快神经网络的训练速度

(在特定的网络中,或许会用到的一些层) 

# Recurrent层:一种特定的网络结构,会用于一些文字识别当中,如:RNN、LSTM等。

# Transformer层:在特定的网络中提出的一种特定的结构。

# dropout层:在训练过程中,会随机的按概率p把一些input tensor数据类型中的一些元素变为0,主要为了防止过拟合。

# Sparse层:Embedding。用于自然语言处理中。

三、线性层Linear Layers(常用)

(1)查看官方文档

 (2)图解:其中,weight相当于Kd

例:in_features=4096,out_features=1000

 (3)代码示例

进行先行层操作之前:

 修改代码,进行线性层处理:

使用flattern把数据展平,会更直观看出变化:

 

修改代码:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值