实验三:神经网络之网络基础、第2关:神经元

文章目录

  • 任务描述
  • 相关知识
    • 神经元模型
    • pytorch 中 torch.mm(a,b) 函数的使用
  • 编程要求
  • 测试说明
  • 答案代码

任务描述

本关任务:通过学习神经元的相关知识,编写一个线性神经元模型。

相关知识

为了完成本关任务,你需要掌握:

  1. 神经元模型;
  2. pytorch中torch.mm(a,b)函数的使用。

神经元模型

神经元是神经网络操作的基本信息处理单位,是神经网络实现的基础。神经元模型有三个基本元素:
1.突触或连接链集。每一个都由其权值或者强度作为特征。具体来说,在连到神经元k的突触j上的输入信号xj​乘以k的突触权值wkj​;
2.加法器。用于求输入信号被神经元的相应突触加权的和;
3.激活函数。用来限制神经元输入振幅。
其基本结构如下图1:

实验三:神经网络之网络基础、第2关:神经元_第1张图片

图中的神经元模型还包括一个外部偏置(bias),记为bk​。偏置bk​的作用是根据其为正或是为负,相应地增加或降低激活函数的网络输入。其数学公式如下:

实验三:神经网络之网络基础、第2关:神经元_第2张图片

其中x1​,x2​,…,xm​是输入信号,wk1​,wk2​,…,wkm​为神经元k的突触权值,uk​是输入信号的线性组合器的输出,bk​为偏置,激活函数为φ(⋅),yk​神经元输出信号。

pytorch 中 torch.mm(a,b) 函数的使用

pytorch深度学习框架为我们提供了一个进行矩阵乘法的方法——torch.mm(a,b)
举个例子,假设矩阵 a 的维度为 (3,4),矩阵 b 的维度为(4,2),则torch.mm(a,b)返回的矩阵的维度则为(3,2)

    import torch
    import numpy as np
    a = torch.tensor(np.random.random((3, 4)), dtype=torch.float32)  # 随机生成一个维度为 [3,4] 的矩阵(tensor)

        """
        例如:
        [[0.3886, 0.3006, 0.4032, 0.9880],
         [0.7401, 0.0117, 0.8987, 0.6140],
         [0.1048, 0.2333, 0.6146, 0.7663]]
        """
        b = torch.tensor(np.random.random((4, 2)), dtype=torch.float32)  # 随机生成一个维度为 [4,2] 的矩阵(tensor)
        """
        例如:
        [[0.3555, 0.2108],
         [0.3660, 0.4737],
         [0.7785, 0.2913],
         [0.3347, 0.4046]]
        """
        y = torch.mm(a, b)  # y 的维度为 [ 3,2 ]
        """
        [[0.8928, 0.7416],
         [1.1725, 0.6718],
         [0.8576, 0.6217]]
        """

编程要求

根据提示,在右侧编辑器 Begin-End 区间补充代码,编写出神经元模型。

测试说明

平台会对你编写的代码进行测试:

测试输入:无
预期输出:
True

开始你的任务吧,祝你成功!

答案代码

import torch


def linear(X,w,b):
    """
    线性神经元
    :param X: 训练数据。形状为[ batch_size, num_inputs ]
    :param w: 权值。形状为[ num_inputs,1]
    :param b: 偏置项。形状为[ 1 ]
    :return: 线性计算结果
    """
    # 矩阵相乘可以使用torch.mm(a,b)
    ########## Begin ##########
    y = torch.mm(X,w)+b
    ########## End ##########
    return y


你可能感兴趣的:(人工智能原理,神经网络,网络,深度学习)