人工神经网络实验:第一次上机

这篇具有很好参考价值的文章主要介绍了人工神经网络实验:第一次上机。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

pratice03:

1.问题描述:

就是通过设置只有一个hidden层的神经网络,对一个平面的灰面和白面进行分类

2.完整代码:

# 可提供解题和验证代码,自行产生数据

import torch
import torch.nn as nn
import torch.nn.functional as F
from torch import tensor
from torch.nn import Parameter


class Act_abs(nn.Module):
    def __init__(self):
        super(Act_abs, self).__init__()

    def forward(self, x):
        x[abs(x) >= 1] = 1
        x[abs(x) < 1] = 0
        return x

class Act_v(nn.Module):
    def __init__(self):
        super(Act_v, self).__init__()

    def forward(self, x):
        x[x < 1] = 0
        x[x >= 1] = 1
        return x

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.lin1 = nn.Linear(2,2,bias =False)
        self.lin2 = nn.Linear(2,1,bias =False)
        self.lin1.weight = Parameter(tensor([[ 1.0,  0.0], [0.0, 1.0]]))
        self.lin2.weight = Parameter(tensor([[ 1.0,1.0]]))
        self.act1 = Act_abs()
        self.act2 = Act_abs()

    def forward(self, x):
        y = self.lin1(x)
        y = self.act1(y)
        y = self.lin2(y)
        y = self.act2(y)
        return y

if __name__ == '__main__':
    net = Net()
    # 第一类
    dotIn = [tensor([0.0,0.0]),tensor([0.2,0.2]),tensor([-0.2,-0.2]),tensor([0.2,-0.2]),tensor([-0.2,0.2])]
    # 边界点(第二类)
    dotEdge = [tensor([1.0,1.0]),tensor([-1.0,1.0]),tensor([1.0,-1.0]),tensor([-1.0,-1.0]),tensor([1.0, 0.2]), tensor([-1.0, 0.2]), tensor([1.0, -0.2]), tensor([-1.0, -0.2])]
    # 第二类
    dotOut = [tensor([1.5, 0.2]), tensor([-1.5, 0.2]), tensor([1.5, -0.2]), tensor([-1.5, -0.2])]
    print('----------内部点--------------')
    for x in dotIn:
        pre = net(x)
        if pre[0] == 0.0:
            print('第一类')
        else:
            print('第二类')
    print('----------边界点--------------')
    for x in dotEdge:
        pre = net(x)
        if pre[0] == 0.0:
            print('第一类')
        else:
            print('第二类')
    print('----------外部点--------------')
    for x in dotOut:
        pre = net(x)
        if pre[0] == 0.0:
            print('第一类')
        else:
            print('第二类')

    print('-----------------生成随机数据------------------')
    acc = 0
    rand_num = 10**4
    for i in range(rand_num):
        X = (torch.rand(2) - 0.5) * 4  # [-2, 2]
        if abs(X[0]) > 1 or abs(X[1]) > 1:
            y = tensor([1])
        else:
            y = tensor([0])

        pre = net(X)

        if pre == y:
            acc+=1

    print('识别准确率Acc: '+ str((acc/rand_num)*100) + '%')

3.代码分析过程:

(1)人工神经网络实验:第一次上机,人工智能,深度学习,pytorch,python

这里做的事情就是,定义了一个Act_abs类,需要的参数是nn.Module类型的变量,里面定义了一个激活函数forward,需要传递一个数值参数x,forward就是x的绝对值大于1取1,否则取0的函数

(2)人工神经网络实验:第一次上机,人工智能,深度学习,pytorch,python

定义一个Act_v的类,需要的参数也是nn.Module,和上面那个类基本相同,唯一的区别就是这里是x是x的真实值大于1才取值1

(3)人工神经网络实验:第一次上机,人工智能,深度学习,pytorch,python

这里面定义了一个神经网络的结构:

人工神经网络实验:第一次上机,人工智能,深度学习,pytorch,python

所谓的Linear层,就是用来将输入向量转化为另一个输出向量,

这里定义了2个线性层,后面设置了对应的线性系数weight1和weight2,

其中使用了2个相同的abs的激活函数层,

最终的神经网络结构如下:

人工神经网络实验:第一次上机,人工智能,深度学习,pytorch,python

因为是二分类的问题,所以激活函数的选择就是 一个类似bool函数的函数,要么0要么1作为输出,而且之所以要使用abs绝对值,就是因为这个正方形处于4个象限,需要绝对值进行判断是在正方形内部还是外部

人工神经网络实验:第一次上机,人工智能,深度学习,pytorch,python

好了。终于发现,我就是一个憨皮,

其实,这里根本就没有什么train和test什么的,这里其实根本没有gradient descend什么的,因为根本就不会进行什么参数调整,

仔细看这个结构,就会发现,它相当于实现了c++里面的:

if(abs(x)>=1 && abs(y)>=1) return 1

这个效果,所以,我感觉它在玩我,

可能就是想模仿一下之后“真正”的深度学习模型吧,

反正这里就很简单文章来源地址https://www.toymoban.com/news/detail-697316.html

到了这里,关于人工神经网络实验:第一次上机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机组成与体系结构第一次试验:运算器实验

    为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正! 掌握使用算术逻辑运算器 74LS181 进行算术运算、 逻辑运算的方法。 掌握基于“累加-移位”原理的串

    2024年02月04日
    浏览(50)
  • 网络安全第一次作业

    1、什么是防火墙 防火墙是一种网络安全系统,它根据预先确定的安全规则监视和控制传入和传出的网络流量。其主要目的是阻止对计算机或网络的未经授权的访问,同时允许合法通信通过。 防火墙可以在硬件、软件或两者的组合中实现,并且可以配置为根据各种条件(如

    2024年02月07日
    浏览(47)
  • 【网络应用与安全】第一次作业

    登录账号 登录个人账号,可以通过图形界面和命令两种方式。 图形界面:当前用户 logout ,切换用户,如果备选用户中没有自己的用户名,点击 not listed ,之后输入用户名和密码登录即可。 命令:使用 su your_username 方式,回车输入密码即可切换。 修改密码 操作步骤 输入

    2024年02月07日
    浏览(47)
  • 【人工智能】实验五 采用卷积神经网络分类MNIST数据集与基础知识

    熟悉和掌握 卷积神经网络的定义,了解网络中卷积层、池化层等各层的特点,并利用卷积神经网络对MNIST数据集进行分类。 编写卷积神经网络分类软件,编程语言不限,如Python等,以MNIST数据集为数据,实现对MNIST数据集分类操作,其中MNIST数据集共10类,分别为手写0—9。

    2024年02月04日
    浏览(57)
  • 图论第一次作业(教材:图论与网络最优化算法龚劬编著)

    5.证明K维超立方体 的顶点是 ,边数是 ,且是二部图,其中, 的顶点集 ,且两顶点相邻当且仅当着两个k维序列正好有一对应项不相同。 8.任何两个以上的人组成的人群中,至少有两个人,他们的朋友数一样多。 11.设 是平面上的点集,其中任意两点间的距离至少是1,证明:

    2024年02月08日
    浏览(42)
  • 研一小白记录第一次在实验室服务器上跑深度学习的代码全过程(实验室服务器上跑代码详细全过程哦)

    你在服务器上跑过代码吗?哇~你跑过!是啥样的...每回见别人跑都会问并且羡慕会在大服务器上跑代码的哈哈哈在研究生刚开学前还甚至不知道什么是服务器,更是无法想象在除了自己能看得见摸得着的电脑屏幕之外跑代码的样子。直到有天开会自己坐在了一个大大的“黑箱

    2024年02月02日
    浏览(53)
  • 神经网络实验--卷积神经网络

    本实验主要为了掌握深度学习的基本原理;能够使用TensorFlow实现卷积神经网络,完成图像识别任务。 文章目录 1. 实验目的 2. 实验内容 3. 实验过程 题目一: 题目二: 实验小结讨论题 ①掌握深度学习的基本原理; ②能够使用TensorFlow实现卷积神经网络,完成图像识别任务。

    2024年02月06日
    浏览(53)
  • 神经网络建模的建模步骤,人工神经网络建模过程

    人工神经网络有很多种,我只会最常用的BP神经网络。不同的网络有不同的结构和不同的学习算法。简单点说,人工神经网络就是一个函数。只是这个函数有别于一般的函数。它比普通的函数多了一个学习的过程。 在学习的过程中,它根据正确结果不停地校正自己的网络结构

    2024年02月06日
    浏览(55)
  • 【PyTorch】记一次卷积神经网络优化过程

    在深度学习的世界中,图像分类任务是一个经典的问题,它涉及到识别给定图像中的对象类别。CIFAR-10数据集是一个常用的基准数据集,包含了10个类别的60000张32x32彩色图像。在上一篇博客中,我们已经探讨如何使用PyTorch框架创建一个简单的卷积神经网络(CNN)来对CIFAR-10数

    2024年01月24日
    浏览(46)
  • 人工神经网络的三个要素,神经网络三要素是指

    人工神经网络主要架构是由神经元、层和网络三个部分组成。整个人工神经网络包含一系列基本的神经元、通过权重相互连接。神经元是人工神经网络最基本的单元。 单元以层的方式组,每一层的每个神经元和前一层、后-层的神经元连接,共分为输入层、输出层和隐藏层,

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包