AI学习记录 - 激活函数的作用

news2024/11/15 12:20:45

试验,通过在线性公式加入激活函数,可以拟合复杂的情况(使用js实现)

结论:1、线性函数的叠加,无论叠加多少次,都是线性的

如下图
在这里插入图片描述

示例代码

线性代码,使用y=kx+b的方式,叠加10个函数

 const echartxianLine = useRef(null);
  useEffect(() => {
    // 基于准备好的dom,初始化echarts实例
    echartxianLine.current = echarts.init(document.getElementById('xianlian'));
    // echartNetwork.current = echarts.init(document.getElementById('network'));
  })
  useEffect(() => {
    const getLineData = (initx) => {
      // 定义10个函数的k和b值
      const coefficients = [
        { k: 5, b: 0.5 },
        { k: 0.8, b: 0.6 },
        { k: 0.1, b: 0.4 },
        { k: 5, b: 0.8 },
        { k: 0.7, b: 0.2 },
        { k: 0.9, b: 0.1 },
        { k: 0.5, b: 0.2 },
        { k: 3, b: 0.1 },
        { k: 0.2, b: 0.5 },
        { k: 1, b: 0.7 }
      ];

      let x = initx;
      // 定义函数数组
      coefficients.map(coeff => {
        x = coeff.k * x + coeff.b
      });

      return x;
    }
    let objlist = []
    for (let i = 0; i <= 50; i++) {
      objlist.push({
        x: i,
        y: getLineData(i),
      })
    }
    setLine(objlist);
    const setxianEchartOptions = (objlist) => {
      // 绘制图表
      echartxianLine.current.setOption({
        xAxis: {
          type: 'category',
          data: objlist.map((item, index) => item.x),
          // data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
        },
        yAxis: {
          type: 'value'
        },
        series: [
          {
            // data: [820, 932, 901, 934, 1290, 1330, 1320],
            data: objlist.map((item, index) => item.y),
            type: 'line',
            smooth: true
          }
        ]
      });
    }
    setxianEchartOptions(objlist);
  }, []);

非线性代码
非线性代码,使用y=kx+b的方式,在函数中间加入非线性函数sin,cos,sigmoid ,tanh,x2 .

  const echartquine = useRef(null);
  useEffect(() => {
    // 基于准备好的dom,初始化echarts实例
    echartquine.current = echarts.init(document.getElementById('quxian'));
    // echartNetwork.current = echarts.init(document.getElementById('network'));
  })
  useEffect(() => {
    const getLineData = (initx) => {
      // 计算sin函数
      function sin(degrees) {
        return Math.sin(degrees);
      }
      function cos(degrees) {
        return Math.cos(degrees);
      }
      const sigmoid = (x) => {
        return 1 / (1 + Math.exp(-x));
      }
      const tanh = (x) => {
        return Math.tanh(x);
      }
      const x2 = (x) => {
        return x * x + 100
      }
      // 定义10个函数的k和b值
      const coefficients = [
        { k: 5, b: 0.5, callbackLoss: sin },
        { k: -0.8, b: 0.6, callbackLoss: sigmoid },
        { k: 0.1, b: 0.4, callbackLoss: sigmoid },
        { k: -5, b: 0.8, callbackLoss: tanh },
        { k: 0.7, b: 0.2, callbackLoss: sigmoid },
        { k: -0.9, b: 0.1, callbackLoss: x2 },
        { k: 0.5, b: 0.2, callbackLoss: sin },
        { k: 3, b: 0.1, callbackLoss: sigmoid },
        { k: 0.2, b: 0.5, callbackLoss: x2 },
        { k: 1, b: 0.7, callbackLoss: x2 }
      ];

      let x = initx;
      let xmid = [];
      // 定义函数数组
      coefficients.map(coeff => {
        if (coeff.callbackLoss) {
          xmid.push(x);
          x = coeff.callbackLoss(coeff.k * x + coeff.b)
        } else {
          x = coeff.k * x + coeff.b
        }
      });
      return {
        xmid: xmid,
        x: x
      };
    }
    let objlist = []
    for (let i = 0; i <= 50; i++) {
      objlist.push({
        x: i,
        y: ((getLineData(i).x * 1000000000) % 1).toFixed(2) * 10,
        // y: getLineData(i).x,
        xmid: getLineData(i).xmid
      })
    }
    console.log("objlist", objlist)
    setLine(objlist);
    const setxianEchartOptions = (objlist) => {
      console.log("quixan", objlist)
      // 绘制图表
      echartquine.current.setOption({
        xAxis: {
          type: 'category',
          data: objlist.map((item, index) => item.x),
          // data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
        },
        yAxis: {
          type: 'value'
        },
        series: [
          {
            // data: [820, 932, 901, 934, 1290, 1330, 1320],
            data: objlist.map((item, index) => item.y),
            type: 'line',
            smooth: true
          }
        ]
      });
    }
    setxianEchartOptions(objlist);
  }, []);

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

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

相关文章

AnimationCurve动画曲线 简单使用

资料 AnimationCurve AnimationCurve 表示一条曲线。可在曲线上添加关键帧&#xff0c;编辑曲线。 水平轴表示时间&#xff0c;竖直轴表示曲线的高度 获取曲线高度方法&#xff0c;AnimationCurve.Evaluate 示例 循环移动Cube,Cube沿着曲线移动 using UnityEngine; publ…

正则表达式与文本处理

目录 一、正则表达式 1、正则表达式定义 1.1正则表达式的概念及作用 1.2、正则表达式的工具 1.3、正则表达式的组成 2、基础正则表达式 3、扩展正则表达式 4、元字符操作 4.1、查找特定字符 4.2、利用中括号“[]”来查找集合字符 4.3、查找行首“^”与行尾字符“$”…

火山引擎边缘智能平台,让AI走进企业现场

如何让大模型更好地与生产进行融合&#xff0c;让AI生产力为企业降本增效&#xff0c;是每个企业都在关注的问题。但设备异构、隐私安全、传输延迟等困难&#xff0c;让大模型走进企业现场变得步履维艰。这种情况&#xff0c;就需要借助边缘智能来应对这些挑战。 什么是边缘智能…

二维数组前缀和

二维数组前缀和&#xff08;Leetcode304&#xff09; 想法(参考题解)&#xff1a; 如上图&#xff0c;在矩阵中根据给定的方框围成的范围&#xff0c;确定范围内元素之和。题目&#xff1a;二维区域和检索 - 矩阵不可变。思路就是使用前缀和&#xff0c;前缀和表示的是面积&am…

Linux 安装 GDB (无Root 权限)

引入 在Linux系统中&#xff0c;如果你需要在集群或者远程操作没有root权限的机子&#xff0c;安装GDB&#xff08;GNU调试器&#xff09;可能会有些限制&#xff0c;因为通常安装新软件或更新系统文件需要管理员权限。下面我们介绍可以在没有root权限的情况下安装GDB&#xf…

微信小程序获取蓝牙并实现内容打印

通过微信小程序如何实现获取蓝牙打印机并实现打印能力&#xff0c;之前做过一个测试Dome&#xff0c;能够获取附近的蓝牙打印机设备并实现打印,今天开放出来供大家参考。 wxml <!--右下角搜索--> <view class"ly-cass-box"><view class"ly-cas…

【Python第三方库】PyQt5安装与应用

文章目录 引言安装PYQT5基于Pyqt5的简单桌面应用常用的方法与属性QtDesigner工具使用与集成窗口类型QWidget和QMainWindow区别 UI文件加载方式直接加载UI文件的方式显示窗口转化py文件进行显示窗口 PyQt5中常用的操作信号与槽的设置绑定页面跳转 引言 PyQt5是一个流行的Python…

Java——多线程(2/9):线程创建方式三Callable,Thread的常用方法(如何创建、代码实例、API及优缺点)

目录 方式三&#xff1a;实现Callable接口 前言 如何创建 代码实例 API及优缺点 Thread的常用方法 代码演示 方式三&#xff1a;实现Callable接口 前言 前两种线程创建方式都存在的一个问题 假如线程执行完毕后有一些数据需要返回&#xff0c;他们重写的run方法均不能…

算法与算法分析

目录 一.前言 二.算法的特性和要求 三.分析算法--时间效率 四. 分析算法--空间效率 一.前言 算法就是对特定问题求解方法和步骤的一种描述&#xff0c;它是指令的有限序列。其中&#xff0c;每个指令表示一个或多个操作。总而言之&#xff0c;我们数据结构就是通过算法实现操…

如何根据员工的反馈来确定六西格玛培训需求?

在六西格玛的推广与实施过程中&#xff0c;最大的挑战往往不在于技术本身&#xff0c;而在于如何让每一位员工都能理解、接受并积极参与其中。员工是企业最直接的执行者&#xff0c;他们的声音直接反映了项目落地的难易程度及潜在障碍。因此&#xff0c;倾听并有效整合员工反馈…

Python Django功能强大的扩展库之channels使用详解

概要 随着实时 web 应用程序的兴起,传统的同步 web 框架已经无法满足高并发和实时通信的需求。Django Channels 是 Django 的一个扩展,旨在将 Django 从一个同步 HTTP 框架转变为一个支持 WebSockets、HTTP2 和其他协议的异步框架。它不仅能够处理传统的 HTTP 请求,还可以处…

STM32串口(串口基础)

串口整个东西可以说但凡你要碰单片机&#xff0c;想做点上点档次的东西的话那你就包用它的。32的串口配置并不难&#xff0c;哪怕是比起51其实也难不到哪去。 目录 一.通信基础 1.通信方式 2.通信速率 二.串口基础 1.串口的数据帧结构&#xff08;协议&#xff09; 2.ST…

【轨物方案】开关柜在线监测物联网解决方案

随着物联网技术的发展&#xff0c;电力设备状态监测技术也得到了迅速发展。传统的电力成套开关柜设备状态监测方法主要采用人工巡检和定期维护的方式&#xff0c;这种方法不仅效率低下&#xff0c;而且难以保证设备的实时性和安全性。因此&#xff0c;基于物联网技术的成套开关…

JDBC标准实现

JDBC是什么 Java Database Connectivity&#xff1a;Java访问数据库的解 决方案 JDBC定义了一套标准接口&#xff0c;即访问数据库的通用API&#xff0c; 不同的数据库厂商根据各自数据库的特点去实现这些接口。 JDBC希望用相同的方式访问不同的数据库&#xff0c;让具体 的…

Nacos 2.x 新增 grpc 端口,Nginx 需要配置TCP端口转发的注意事项

Nacos 2.x 开始&#xff0c;最大的变化就是端口。在默认主端口 8848 之外又新增了三个端口&#xff0c;新增端口是在配置的主端口 server.port 的基础上&#xff0c;进行一定偏移量自动生成。 8848&#xff08;主端口&#xff0c;默认8848&#xff09;web页面端口及相关http接口…

医院等保解决方案有哪些?用哪些软件可以加强等级保护?

在医疗领域&#xff0c;信息系统的安全直接关系到患者的隐私保护、医院的正常运营乃至社会的稳定。医院信息系统面临着越来越多的安全挑战。 为了确保患者信息的安全与隐私保护&#xff0c;医院需要采取有效的等保&#xff08;等级保护&#xff09;措施。那么&#xff0c;医院…

数据恢复教程:如何从硬盘、SD存储卡、数码相机中恢复误删除数据。

您正在摆弄 Android 设备。突然&#xff0c;您意外删除了一张或多张图片。不用担心&#xff0c;您总能找到一款价格实惠的数据恢复应用。这款先进的软件可帮助 Android 用户从硬盘、安全数字 (SD) 或存储卡以及数码相机中恢复已删除的数据。 Android 上数据被删除的主要原因 在…

以FastGPT为例提升Rag知识库应用中的检索召回命中率

提升Rag知识库应用中的检索召回命中率 在构建Rag&#xff08;Retrieval-Augmented Generation&#xff09;知识库应用时&#xff0c;检索召回知识片段的命中率是至关重要的。高效、准确的检索机制是确保AI系统能够精准响应用户查询的基础。当前&#xff0c;FastGPT主要采用三种…

四步实现网站HTTPS访问

随着网络安全的重要性日益凸显&#xff0c;HTTPS&#xff08;超文本传输安全协议&#xff09;已成为现代网站的标准配置。HTTPS协议作为HTTP协议的安全版本&#xff0c;通过SSL协议加密数据传输&#xff0c;不仅能保护用户数据的安全&#xff0c;还能提升搜索引擎排名&#xff…

一文带你搞懂C++友元和类型转换

6. C友元 在C中&#xff0c;一个类中可以有 public、protected、private 三种属性的成员&#xff0c;通过对象可以访问 public 成员&#xff0c;只有本类中的函数可以访问本类的 private 成员。现在&#xff0c;我们来介绍一种例外情况——友元&#xff08;friend&#xff09;。…