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

news2024/11/25 7:12:24

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)

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

(2)

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

(3)

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

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

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

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

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

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

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

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

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

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

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

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

反正这里就很简单

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/980603.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Cisco Packet Tracer】交换机划分Vlan实验

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

制作成绩查询平台

成绩查询是学校教学管理中必不可少的一项工作&#xff0c;传统的成绩查询方式通常是将成绩表格发到群里供家长查看。然而&#xff0c;这种方式存在许多不便之处&#xff0c;如成绩表格容易丢失、家长需要翻找自己孩子的成绩等问题。 好消息&#xff01;博主给大家争取到的易查分…

“谁天生是项目经理?四大特质决定你的机会“

大家好&#xff0c;我是老原。 但其实不少刚开始尝试项目管理的人&#xff0c;包括老原自己也曾经遇到过这样的问题&#xff1a; ▪ 自己没权没势&#xff0c;大家凭什么听我的&#xff1f; ▪ 资源受限&#xff0c;如何向老板争取更多资源&#xff1f; ▪ 怎样才能推进多方…

el-date-picker 禁止选择当前年之前或者之后的年份

<el-date-picker v-model"ruleForm.years" type"year" :disabled-date"pickerOptions"placeholder"请选择获奖年度" class"wih-650p" value-format"YYYY" />之前 const disabledDateFun (time: any) >…

pycharm如何配置 .gitignore 文件

参考&#xff1a;https://zongweizhou1.github.io/2019/06/16/pycharm-gitignore/ .gitignore 文件本身不需要纳入版本控制&#xff0c;在 .gitignore 文件中写入“.gitignore"忽略即可

Python,如何安装cython_bbox

我是windows系统&#xff0c;pip install cython_bbox无法编译。 解决&#xff1a; 安装pip install cpython 安装VS2019企业版&#xff0c;为了windows能编译一些乱七八糟的&#xff0c;我一般都装个这个。 key BF8Y8-GN2QH-T84XB-QVY3B-RC4DF下载源码&#xff1a;https://…

中国电信举办5G RedCap产业对接交流会,加速推进RedCap商用

近日&#xff0c;由中国电信股份有限公司浙江分公司、天翼物联产业联盟、浙江5G产业联盟联合主办的 “5G融合领先&#xff0c;赋能千行百业数字化”中国电信5G RedCap产业对接交流会&#xff08;浙江站&#xff09;在杭州举办&#xff0c;相关产业链同仁齐聚一堂&#xff0c;共…

Vue+NodeJS+MongoDB实现邮箱验证注册、登录

一.主要内容 邮件发送用户注册用户信息存储到数据库用户登录密码加密JWT生成tokenCookie实现快速登录 在用户注册时,先发送邮件得到验证码.后端将验证进行缓存比对,如果验证码到期,比对不正确,拒绝登录;如果比对正确,将用户的信息进行加密存储到数据库. 用户登录时,先通过用…

c高级day1(9.6) 离线软件安装,文件相关指令,文件权限相关指令,

作业: 使用cut截取出Ubuntu用户的家目录&#xff0c;要求&#xff1a;不能使用":"作为分割 不会 Xmind&#xff1a;

r5 7640h和i5 1340p选哪个 锐龙r57640h和酷睿i51340p对比

i5 1340P采用10nm工艺 最高睿频4.6GHz 十核心 十六线程三级缓存 12MB热设计功耗(TDP) 28W 支持最大内存 64GB内存类型 DDR4 3200MHzDDR5 5200MHz集成显卡 Intel Iris Xe Graphics 选i5-1340P还是R5-7640H、这些点很重要 http://www.adiannao.cn/dy R5 7640H搭载Radeon 760M核显…

IDEA创建注释模板

IDEA创建注释模板 一&#xff0c;类注释模板 1.创建类注释模板 **位置&#xff1a;**File—Settings—Editor—File and Code Templates—Files&#xff0c;进入该页面后可选择Class、Interface、Enum等文件&#xff0c;对应右侧内容分别为&#xff1a; 2.模板内容 /*** Desc…

深入学习JavaScript ES8函数式编程:特性与实践指南

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 函数式编程已经成为现代…

【SG滤波】三阶滤波、五阶滤波、七阶滤波(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

YOLOv8 : 数据组织

1. 数据源 首先YOLOv8是支持目标分类、检测和目标分割。当前以应用最为广泛的目标检测为例&#xff0c;简单说明数据相关的信息。 一般情况下&#xff0c;建议将数据划分成images和labels&#xff0c;其中images存储图像&#xff0c;labels存储标签文件(YOLO格式)。如果是VOC数…

编译CentOS6.10系统的OpenSSHV9.4rpm安装包

目前OpenSSH版本已至9.4&#xff0c;其作为操作系统底层管理平台软件&#xff0c;需要保持更新以免遭受安全攻击&#xff0c;编译生成rpm包是生产环境中批量升级的最佳途径。编译软件包时与当前的运行环境有较大关系&#xff0c;请注意本安装包系在CentOS6.10原生系统纯净系统下…

用对工具,你的全渠道电子商务业务就成功了一半

希望将全渠道电子商务纳入您的业务战略&#xff0c;但不确定从哪里开始&#xff1f;我们为您提供保障。这篇文章将指导您了解全渠道商务的基础知识&#xff0c;以及它与多渠道方法的区别&#xff0c;还将探讨利用全渠道方法的众多好处&#xff0c;并讨论企业如何通过全渠道客户…

c语言 1.0

1.1 C语言概述 C语言是什么 C语言是计算机编程语言的一种&#xff0c;编程语言用于人和机器交流。 编程语言通过一系列的语法和语义规则来描述计算机程序的行为和逻辑&#xff0c;程序员使用编程语言编写程序后&#xff0c;计算机可以将程序转化为二进制指令&#xff08;即机器…

Fiddler抓包工具的使用(高级操作精华)

概述 在软件项目的开发过程中&#xff0c;软件的质量同样在项目起这十分重要的地位&#xff0c;如何保证产品质量一直是业内人员十分重视的问题。全员质量保证、软件研发流程、各种开源工具这都是对产品质量保证有一定的促进作用。那么如何将这种理念和方式落地到实际场景&…

实战教程:如何用微信小程序功能建立一个自己的商城?

微信小程序商城是一种便捷、高效的电商平台&#xff0c;让商家能够快速搭建自己的线上店铺&#xff0c;并与用户进行交互和交易。在本文中&#xff0c;我们将逐步介绍如何创建自己的微信小程序商城&#xff0c;并分享一些实战技巧。 首先&#xff0c;登录乔拓云网后台&#xff…

40 秒下线一台特斯拉,装配速度“令人发指”,第200万辆整车下线

今天&#xff0c;特斯拉宣布&#xff0c;中国上海超级工厂已经下线了第 200 万辆新能源汽车&#xff0c;这标志着其在中国市场的销售量继续增长。 这家特斯拉位于中国上海的超级工厂是其在全球最大的工厂之一。该超级工厂于2019年建成并开始生产&#xff0c;仅仅使用了33个月的…