深度学习网络相关代码(持续更新)

神经网络层

sigmoid

在这里插入图片描述

在 Python 中,可以这样做:

import torch

x = torch.tensor([1.0, 2.0, -1.0, 0.0])
x_sigmoid = torch.sigmoid(x)
print(x_sigmoid)  # 输出 tensor([0.7311, 0.8808, 0.2689, 0.5000])

torch.sigmoid 会对输入的每个元素进行操作,返回一个与输入形状相同的 tensor,其中每个元素都是对应的 sigmoid 值。

sigmoid 函数将其输入的每个元素映射到 0 和 1 之间。因此,结果数组中的每个值都被归一化到了这个范围内。这个特性使得 sigmoid 函数常用于需要输出概率值或在 0 和 1 之间进行归一化的情况。

Liner层(全连接层)

主要用于改变输出维度

全连接层(Fully Connected Layer,简称 FC 层)是神经网络中的一种基本层,其主要作用是将输入的特征进行线性变换,然后通过一个非线性激活函数(如ReLU)进行处理。全连接层的作用和意义包括:

  1. 特征变换和组合:全连接层能够将输入特征映射到一个新的空间,通过线性变换和非线性激活函数的组合,使模型能够捕捉到数据中的复杂特征和模式。
  2. 信息集成:全连接层将输入的所有特征与输出的每一个神经元连接,允许模型在不同特征之间进行信息整合,从而提高模型的表达能力。
  3. 维度变化:全连接层可以改变输入的特征维度,通常用于将高维特征向低维特征压缩,或者将低维特征向高维特征扩展,为后续的网络层提供合适的输入维度。
  4. 分类和回归任务:在分类任务中,全连接层的输出通常对应于类别的数量;在回归任务中,全连接层的输出通常是预测值。

以下是一个简单的代码示例,展示了全连接层的基本使用。这个示例使用PyTorch框架定义一个简单的神经网络,并展示输入和输出的变化。

import torch
import torch.nn as nn
import torch.optim as optim

# 定义一个简单的神经网络,包含一个全连接层
class SimpleNN(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super(SimpleNN, self).__init__()
        self.fc1 = nn.Linear(input_size, hidden_size)  # 全连接层1
        self.relu = nn.ReLU()  # ReLU激活函数
        self.fc2 = nn.Linear(hidden_size, output_size)  # 全连接层2

    def forward(self, x):
        out = self.fc1(x)  # 通过全连接层1
        out = self.relu(out)  # 通过ReLU激活函数
        out = self.fc2(out)  # 通过全连接层2
        return out

# 示例输入
input_size = 4  # 输入特征维度
hidden_size = 5  # 隐藏层神经元数量
output_size = 3  # 输出维度(例如,3个分类)
batch_size = 2  # 批次大小

# 创建网络实例
model = SimpleNN(input_size, hidden_size, output_size)

# 创建随机输入数据(批次大小为2,特征维度为4)
inputs = torch.randn(batch_size, input_size)
print("输入:")
print(inputs)

# 通过网络进行前向传播
outputs = model(inputs)
print("输出:")
print(outputs)

在这个示例中,网络包含两个全连接层(fc1fc2)以及一个ReLU激活函数。网络的输入维度为4,隐藏层的神经元数量为5,输出维度为3。以下是输入和输出的示例:

输入:
tensor([[ 0.1234, -0.2345,  0.3456, -0.4567],
        [ 0.5678, -0.6789,  0.7890, -0.8901]])

输出:
tensor([[-0.1234,  0.2345, -0.3456],
        [ 0.4567, -0.5678,  0.6789]], grad_fn=<AddmmBackward0>)

在实际运行中,具体数值会根据随机初始化的权重和输入数据有所不同。全连接层将输入的特征通过线性变换(矩阵乘法和加法)映射到新的特征空间,然后通过激活函数引入非线性,从而使网络能够学习到复杂的特征表示和模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值