永康做网站的/怎样进行关键词推广
🎯要点
🎯衍射光学卷积算法模拟 | 🎯模拟或数字电子计算之前加入一层光学计算 | 🎯前馈卷积神经网络计算成像系统对输入图像进行分类 | 🎯相位掩模利用线性空间不变成像系统执行固有卷积
📜用例 Python非线性光学映射数据压缩算法
🍪语言内容分比
🍇Python随机梯度下降算法
成本函数或损失函数是通过改变决策变量来最小化(或最大化)的函数。许多机器学习方法都在解决表面下的优化问题。它们倾向于通过调整模型参数(如神经网络的权重和偏差、随机森林或梯度提升的决策规则等)来最小化实际输出和预测输出之间的差异。
在回归问题中,通常具有输入变量 x = ( x 1 , … , x r ) x =\left(x_1, \ldots, x_r\right) x=(x1,…,xr) 的向量和实际输出 y y y。您想要找到一个将 x x x 映射到预测响应 f ( x ) f( x ) f(x) 的模型,以便 f ( x ) f( x ) f(x) 尽可能接近 y y y。例如,您可能想要根据某人在公司工作的年数或教育水平等输入来预测某人的工资等输出。
您的目标是最小化预测 f ( x ) f( x ) f(x) 与实际数据 y y y 之间的差异。这种差异称为残差。在此类问题中,您希望最小化残差平方和,其残差平方和 = Σ i ( y i − f ( x i ) ) 2 =\Sigma_{ i }\left(y_{ i }-f\left( x _{ i }\right)\right )^2 =Σi(yi−f(xi))2 对于所有观测值 i = 1 , … , n i=1, \ldots, n i=1,…,n,其中 n n n 是观测值总数。或者,您可以使用均方误差 (MSE = SSR / n ) =\operatorname{SSR} / n) =SSR/n) 代替残差平方和。
最小化残差平方和和均方误差都使用实际输出和预测输出之差的平方。差异越小,预测越准确。差异为零表示预测与实际数据相同。
通过调整模型参数来最小化残差平方和或均方误差。例如,在线性回归中,你想要找到函数 f ( x ) = b 0 + b 1 x 1 + ⋯ + b r x r f( x )=b_0+b_1 x_1+\cdots+b_{ r } x_{ r } f(x)=b0+b1x1+⋯+brxr,因此你需要确定权重 b 0 , b 1 , … , b r b_0, b_1, \ldots , b_{ r } b0,b1,…,br 最小化残差平方和或均方误差。
在分类问题中,输出 y y y 是分类的,通常为 0 或 1 。例如,您可能尝试预测电子邮件是否是垃圾邮件。在二进制输出的情况下,可以方便地最小化交叉熵函数,该函数也取决于实际输出 y i y_{ i } yi 和相应的预测 p ( x i ) p\left( x _{ i }\right) p(xi) :
H = − ∑ i ( y i log ( p ( x i ) ) + ( 1 − y i ) log ( 1 − p ( x i ) ) ) H=-\sum_i\left(y_i \log \left(p\left( x _i\right)\right)+\left(1-y_i\right) \log \left(1-p\left( x _i\right)\right)\right) H=−i∑(yilog(p(xi))+(1−yi)log(1−p(xi)))
在常用于解决分类问题的逻辑回归中,函数 p ( x ) p( x ) p(x) 和 f ( x ) f( x ) f(x) 定义如下:
p ( x ) = 1 1 + exp ( − f ( x ) ) f ( x ) = b 0 + b 1 x 1 + ⋯ + b r x r \begin{gathered} p( x )=\frac{1}{1+\exp (-f( x ))} \\ f( x )=b_0+b_1 x_1+\cdots+b_r x_r \end{gathered} p(x)=1+exp(−f(x))1f(x)=b0+b1x1+⋯+brxr
同样,您需要找到权重 b 0 、 b 1 、 … 、 b r b_0、b_1、\ldots、b_r b0、b1、…、br,但这一次它们应该最小化交叉熵函数。
在微积分中,函数的导数显示当您修改其参数时值的变化量。导数对于优化很重要,因为零导数可能表示最小值、最大值或鞍点。
多个自变量 v 1 , … , v r v_1, \ldots, v_{ r } v1,…,vr 的函数 C C C 的梯度用 ∇ C ( v 1 , … , v r ) \nabla C\left(v_1, \ldots, v_{ r }\right) ∇C(v1,…,vr) 表示,并定义为 C C C 对每个自变量的偏导数的向量函数: ∇ C = ( ∂ C / ∂ v 1 , … , ∂ C / v r ) \nabla C=\left(\partial C / \partial v_1, \ldots, \partial C / v_r\right) ∇C=(∂C/∂v1,…,∂C/vr)。符号 ∇ \nabla ∇ 称为 nabla。
函数 C C C 在给定点的梯度的非零值定义了 C C C 最快增长的方向和速率。使用梯度下降时,您对成本函数下降最快的方向感兴趣。该方向由负梯度 − ∇ C -\nabla C −∇C 确定。
基本梯度下降
这是该算法的基本实现,从任意点开始,迭代地将其移向最小值,并返回一个有望达到或接近最小值的点:
def gradient_descent(gradient, start, learn_rate, n_iter):vector = startfor _ in range(n_iter):diff = -learn_rate * gradient(vector)vector += diffreturn vector
在应用gradient_descent()
之前,您可以添加另一个终止条件:
import numpy as npdef gradient_descent(gradient, start, learn_rate, n_iter=50, tolerance=1e-06
):vector = startfor _ in range(n_iter):diff = -learn_rate * gradient(vector)if np.all(np.abs(diff) <= tolerance):breakvector += diffreturn vector
您只需要一条语句来测试梯度下降实现:
>>> gradient_descent(
... gradient=lambda v: 2 * v, start=10.0, learn_rate=0.2
... )
2.210739197207331e-06
随机梯度下降算法
随机梯度下降算法是梯度下降的一种改进。在随机梯度下降中,您仅使用观测值的随机一小部分而不是全部来计算梯度。在某些情况下,这种方法可以减少计算时间。
import numpy as npdef sgd(gradient, x, y, start, learn_rate=0.1, batch_size=1, n_iter=50,tolerance=1e-06, dtype="float64", random_state=None
):if not callable(gradient):raise TypeError("'gradient' must be callable")dtype_ = np.dtype(dtype)x, y = np.array(x, dtype=dtype_), np.array(y, dtype=dtype_)n_obs = x.shape[0]if n_obs != y.shape[0]:raise ValueError("'x' and 'y' lengths do not match")xy = np.c_[x.reshape(n_obs, -1), y.reshape(n_obs, 1)]seed = None if random_state is None else int(random_state)rng = np.random.default_rng(seed=seed)vector = np.array(start, dtype=dtype_)learn_rate = np.array(learn_rate, dtype=dtype_)if np.any(learn_rate <= 0):raise ValueError("'learn_rate' must be greater than zero")batch_size = int(batch_size)if not 0 < batch_size <= n_obs:raise ValueError("'batch_size' must be greater than zero and less than ""or equal to the number of observations")n_iter = int(n_iter)if n_iter <= 0:raise ValueError("'n_iter' must be greater than zero")tolerance = np.array(tolerance, dtype=dtype_)if np.any(tolerance <= 0):raise ValueError("'tolerance' must be greater than zero")for _ in range(n_iter):rng.shuffle(xy)for start in range(0, n_obs, batch_size):stop = start + batch_sizex_batch, y_batch = xy[start:stop, :-1], xy[start:stop, -1:]grad = np.array(gradient(x_batch, y_batch, vector), dtype_)diff = -learn_rate * gradif np.all(np.abs(diff) <= tolerance):breakvector += diffreturn vector if vector.shape else vector.item()
随机梯度下降的动量
import numpy as npdef sgd(gradient, x, y, start, learn_rate=0.1, decay_rate=0.0, batch_size=1,n_iter=50, tolerance=1e-06, dtype="float64", random_state=None
):if not callable(gradient):raise TypeError("'gradient' must be callable")dtype_ = np.dtype(dtype)x, y = np.array(x, dtype=dtype_), np.array(y, dtype=dtype_)n_obs = x.shape[0]if n_obs != y.shape[0]:raise ValueError("'x' and 'y' lengths do not match")xy = np.c_[x.reshape(n_obs, -1), y.reshape(n_obs, 1)]seed = None if random_state is None else int(random_state)rng = np.random.default_rng(seed=seed)vector = np.array(start, dtype=dtype_)learn_rate = np.array(learn_rate, dtype=dtype_)if np.any(learn_rate <= 0):raise ValueError("'learn_rate' must be greater than zero")decay_rate = np.array(decay_rate, dtype=dtype_)if np.any(decay_rate < 0) or np.any(decay_rate > 1):raise ValueError("'decay_rate' must be between zero and one")batch_size = int(batch_size)if not 0 < batch_size <= n_obs:raise ValueError("'batch_size' must be greater than zero and less than ""or equal to the number of observations")n_iter = int(n_iter)if n_iter <= 0:raise ValueError("'n_iter' must be greater than zero")tolerance = np.array(tolerance, dtype=dtype_)if np.any(tolerance <= 0):raise ValueError("'tolerance' must be greater than zero")diff = 0for _ in range(n_iter):# Shuffle x and yrng.shuffle(xy)for start in range(0, n_obs, batch_size):stop = start + batch_sizex_batch, y_batch = xy[start:stop, :-1], xy[start:stop, -1:]grad = np.array(gradient(x_batch, y_batch, vector), dtype_)diff = decay_rate * diff - learn_rate * gradif np.all(np.abs(diff) <= tolerance):breakvector += diffreturn vector if vector.shape else vector.item()
👉参阅、更新:计算思维 | 亚图跨际
相关文章:

Python(TensorFlow)衍射光学层卷积算法模拟(英伟达GPU)
🎯要点 🎯衍射光学卷积算法模拟 | 🎯模拟或数字电子计算之前加入一层光学计算 | 🎯前馈卷积神经网络计算成像系统对输入图像进行分类 | 🎯相位掩模利用线性空间不变成像系统执行固有卷积 📜用例 Python非…...

iOS开发进阶(二十二):Xcode* 离线安装 iOS Simulator
文章目录 一、前言二、模拟器安装 一、前言 Xcode 15 安装包的大小相比之前更小,因为除了 macOS 的 Components,其他都需要动态下载安装,否则提示 iOS 17 Simulator Not Installed。 如果不安装对应的运行模拟库,真机和模拟器无法…...

Prostgresql的Timescaledb插件/扩展部署
背景:研发需求,需要把docker部署得postgresql迁移到新的节点并要求再本地部署,提前查看数据库需要那些插件,并进行安装,docker部署的默认有插件。 版本对比:postgresql版本对应某个Timescaledb版本 我得p…...

分布式知识总结(一致性Hash算法)
文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 一致性Hash算法 假如有三台服务器编号node0、node1、node2&…...

图数据库在社交网络分析中的应用
随着社交网络的飞速发展,用户之间的关系变得日益复杂。传统的关系型数据库由于其表结构的限制,难以高效地处理和查询这些复杂的网络数据。图数据库以其独特的图模型结构,能够更好地表示和分析社交网络中的关系,因而在社交网络分析…...

Git基础使用教程
版本控制手册 本文中出现的 [ ] 为根据需求自行修改的变量。 基本命令 git init:将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中。 git config --global user.name [xxx]:设置全局用户名,信息记录在~/.gitconfig文件中。…...

技术速递|Python in Visual Studio Code 2024年8月发布
排版:Alan Wang 我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展将于 2023 年 8 月发布! 此版本包括以下公告: 面向贡献者的 Python 扩展开发容器用于运行带有参数的 Python 文件的调试配置Python 扩展 API 的 Npm 包容错 …...

【话题】重塑未来:AI辅助编程对程序员工作的影响与应对策略
目录 人工智能时代,程序员如何保持核心竞争力? 引言 方向一:AI辅助编程对程序员工作的影响 效率提升 代码质量 潜在风险 方向二:程序员应重点发展的核心能力 复杂系统设计 跨学科知识整合 与AI协作的能力 方向三:人机协…...

在Debian上安装freeswitch
在Debian上安装freeswitch 说明: 首次发表日期:2024-08-12参考文档: https://medium.com/jogikrunal9477/ultimate-guide-to-installing-freeswitch-on-ubuntu-22-04-lts-3745ef6a6bd6https://developer.signalwire.com/freeswitch/FreeSWI…...

论文分享 | Fuzz4All: 基于大语言模型的通用模糊测试
大语言模型是当前最受关注的研究热点,基于其生成和理解能力,对现有领域在提升性能和效果上做更多尝试。分享一篇发表于2024年ICSE会议的论文Fuzz4All,它组合多个大语言模型以非常轻量且黑盒的方式,实现了一种跨语言和软件的通用模…...

VS Code 配置docker 管理员权限终端
问题描述 在容器中需要使用sudo或者su root时候,权限不够,被灵魂提问。 然而,镜像是官方发布的,翻遍了githubissues也没有找到password. 解决 Attach shell 在docker插件中,attach shell 可以直接获得shell。 所…...

使用Linux实现FTP云盘1
关于FTP服务器 FTP(文件传输协议)服务器是在互联网上提供文件存储和访问服务的计算机,它们依照FTP 协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。 程序运行,服务端不断接收客户端指令,服务 端可同时处…...

tombo resquiggle
Re-squiggle 算法 简介 纳米孔读取产生的电流信号水平数据称为squiggle。将这些squiggle信息进行基底呼叫通常与参考序列相比会包含一些错误。Re-squiggle算法定义了从squiggle到参考序列的新分配,即重新squiggle。 Re-squiggle算法是Tombo框架的基础。该算法输入包含原始信…...

vue3获取vue实例 并注册全局属性方法
vue3注册全局属性方法 前言一、app.config.globalProperties1 注册实例2 注册方法 二、依赖注入(Provide / Inject)1 注册实例2 注册方法3 一次性多次传入 最后 前言 在使用 Vue 时,多个地方使用同一个方法导致每个地方都需要按需引用&#…...

function calling后,如何让大模型进行自然语言输出?
在现代的自然语言处理(NLP)系统中,Function Calling 是指模型在对话过程中调用外部函数以获取特定数据或执行特定操作的能力。在 Function Calling 后,你可以将接收到的数据发送回大模型,并生成自然语言输出。以下是如…...

Android笔试面试题AI答之Kotlin(8)
文章目录 34.Kotlin 泛型中的“*”和“Any”有什么区别?Any*总结 35.Kotlin 协程在哪些方面优于 RxKotlin/RxJava?1. 语法简洁性和易读性2. 性能3. 错误处理和调试4. 场景适用性5. 学习和使用成本 36.Kotlin 协程中的 launch/join 和 async/await 有什么…...

LVS服务的搭建之NAT模式、DR模式的搭建实战
# LVS的概述 1/什么是LVS linux virtural server的简称,也就是linxu虚拟机服务器,使用lvs可以达到的技术目标是:通过linux达到负载均衡技术和linux操作系统实现一个高性能高可用的linux服务器集群,他具有良好的可靠性࿰…...

Raft分布式存储
文章目录 前言一、项目大纲二、Raft模块1.Raft介绍2.大致内容Leader与选举日志同步、心跳raft日志的两个特点 3.主要流程1. raft类的定义关键函数m_nextIndex 和 m_matchIndex作用 2.启动初始化3.竞选leaderelectionTimeOutTicker:doElectionsendRequestVoteRequestVote 4.日志…...

【Linux】使用nm命令查看动态库包含的符号表
【Linux】使用nm命令查看动态库包含的符号表 文章目录 【Linux】使用nm命令查看动态库包含的符号表1. nm的简介2. nm的使用3. nm查找具体的函数名或变量名Reference 1. nm的简介 nm命令来自name的简写。nm命令常用于查看二进制文件中的符号表,通常用于静态库和可执…...

你还不知道苹果手机截长图的方法?4 种方法都可以
苹果手机截长图 先给大家介绍第一个苹果手机截长图的方法,如果你是在 Safari 浏览器中想要截图分享的话,浏览器截图自带可以截取全页的选项,让你实现截长屏的操作。首先找到你想要截取的网页,然后按下手机的电源按键以及音量按键…...

C++选择题带答案
1. 在定义成员函数时给出的成员函数的正确标记是 (1) 。 (a) <类名>.<函数名> (b) <类名>::<函数名> (c) <对象名>.<函数名> (d) <对象名>::<函数名> 2.以下关于函数指针的叙述中,正确…...

Unity动画模块 之 简单创建一个序列帧动画
本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 1.什么是序列帧动画 序列帧动画简单来讲就是通过连续播放一系列静态图像,形成动态视觉效果的过程ÿ…...

学会高效记录并整理编程学习笔记
文章目录 一、前言二、建议和方法2.1 明确笔记目的2.2 选择合适的工具2.3 结构化笔记2.4 高效记录技巧2.5 图文并茂2.6 定期回顾与整理2.7 利用搜索与链接2.8 分享与交流2.9 实践与应用 三、总结 一、前言 高效记录并整理编程学习笔记是提升学习效率和巩固知识的重要手段&…...

Llama 3.1中文微调数据集已上线,超大模型一键部署
7 月的 AI 圈真是卷完小模型卷大模型,精彩不停!大多数同学都能体验 GPT-4o、Mistral-Nemo 这样的小模型,但 Llama-3.1-405B 和 Mistral-Large-2 这样的超大模型让很多小伙伴犯了难。 别担心!hyper.ai 官网在教程板块为大家提供了…...

css实现太极图
<template><div><!-- 太极图 --><div class"all"><div class"left box"></div><div class"right box"></div><div class"black"><div class"inner_white"><…...

Android 13 移植EthernetSettings/Ethernet更新
移植EthernetSettings Android 13 在Settings搜索没有发现以太网设置,应该是移除了,但是客户的设备需要,所以移植Android 11的. 以太网相关的功能在Android13中进行模块化,提取到packages/modules/Connectivity/中, EthernetManager相关代码从framework移到packages/modules/…...

极狐GitLab 如何设置访问令牌前缀?
极狐GitLab 是 GitLab 在中国的发行版,专门面向中国程序员和企业提供企业级一体化 DevOps 平台,用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规,而且所有的操作都是在一个平台上进行,省事省心省钱。可以一键安装极狐GitL…...

leetcode日记(72)最大矩形
依旧是看了答案才知道大概方法…太难想到了 和上一道题思路相似!可以直接调用上题的函数,只不过调用前的准备非常难想到,就是建造形状相同的矩阵,第i行j列的元素是i行中j列前相邻的“1”的个数。 class Solution { public:int m…...

自驾畅游保定:参观总督署,品美食文化
这是学习笔记的第 2490篇文章 前几天跟孩子聊天,孩子说暑假都没出去玩了,暑假旅行的作业咋写?让我有满满的负疚感,去附近的公园、吃点美食不算旅游,得了,得安排一下一日游。 几个月前心心念的去保定&#x…...

我常用的几个傻瓜式爬虫工具,收藏!
爬虫类工具主要两种,一种是编程语言第三方库,比如Python的scrapy、selenium等,需要有一定的代码基础,一种是图形化的web或桌面应用,比如Web Scraper、后羿采集器、八爪鱼采集器、WebHarvy等,接近于傻瓜式操…...