当前位置: 首页 > news >正文

梯度下降优化

二阶梯度优化

  • 1.无约束优化算法
    • 1.1最小二乘法
    • 1.2梯度下降法
    • 1.3牛顿法/拟牛顿法
  • 2.一阶梯度优化
    • 2.1梯度的数学原理
    • 2.2梯度下降算法
  • 3.二阶梯度优化梯度优化
    • 3.1 牛顿法
    • 3.2 拟牛顿法

1.无约束优化算法

在机器学习中的无约束优化算法中,除了梯度下降以外,还有最小二乘法,牛顿法和拟牛顿法。

1.1最小二乘法

最小二乘法是计算解析解,如果样本量不算很大,且存在解析解,最小二乘法比起梯度下降法要有优势,计算速度很快。

1.2梯度下降法

梯度下降法是迭代求解,是如果样本量很大,用最小二乘法由于需要求一个超级大的逆矩阵,这时就很难或者很慢才能求解解析解了,使用迭代的梯度下降法比较有优势。

1.3牛顿法/拟牛顿法

牛顿法/拟牛顿法也是迭代求解,不过梯度下降法是梯度求解,而牛顿法/拟牛顿法是用二阶的海森矩阵的逆矩阵或伪逆矩阵求解。相对而言,使用牛顿法/拟牛顿法收敛更快。但是每次迭代的时间比梯度下降法长。

2.一阶梯度优化

2.1梯度的数学原理

链接: 一文看懂常用的梯度下降算法
链接: 详解梯度下降法(干货篇)
链接: 梯度下降算法Gradient Descent的原理和实现步骤

2.2梯度下降算法

链接: 梯度下降算法(附代码实现)

#定义函数
def f(x):return 0.5 * (x - 0.25)**2
#f(x)的导数(现在只有一元所以是导数,如果是多元函数就是偏导数)
def df(x):return x - 0.25 #求导应该不用解释吧
alpha = 1.8 #你可以更改学习率试试其他值
GD_X = [] #每次x更新后把值存在这个列表里面
GD_Y = [] #每次更新x后目标函数的值存在这个列表里面
x = 4 #随机初始化的x,其他的值也可以
f_current = f_change = f(x)
iter_num = 0while iter_num <100 and f_change > 1e-10: #迭代次数小于100次或者函数变化小于1e-10次方时停止迭代iter_num += 1x = x - alpha * df(x)tmp = f(x)f_change = abs(f_current - tmp)f_current = tmpGD_X.append(x)GD_Y.append(f_current)import numpy as np
import matplotlib.pyplot as pltX = np.arange(-4,4,0.05)
Y = f(X)
Y = np.array(Y)plt.plot(X,Y)
plt.scatter(GD_X,GD_Y)
plt.title("$y = 0.5(x - 0.25)^2$")
plt.show()plt.plot(X,Y)
plt.plot(GD_X,GD_Y) #注意为了显示清楚每次变化这里我做了调整
plt.title("$y = 0.5(x - 0.25)^2$")
plt.show()

3.二阶梯度优化梯度优化

3.1 牛顿法

3.2 拟牛顿法

拟牛顿算法是二阶梯度下降吗?
是的,拟牛顿算法是一种二阶梯度下降算法。它通过估计目标函数的海森矩阵的逆矩阵来近似实际的牛顿方法,以加快收敛速度。与传统的一阶梯度下降算法相比,拟牛顿算法具有更快的收敛速度和更好的收敛性能。

LBFGS是拟牛顿算法吗
是的,LBFGS(Limited-memory Broyden-Fletcher-Goldfarb-Shanno)是一种拟牛顿算法。它是一种基于梯度的优化算法,通过逐步近似目标函数的海森矩阵的逆矩阵来更新参数。LBFGS算法主要的特点是利用有限的内存来存储历史信息,从而避免了海森矩阵的存储和计算,同时具有较好的收敛性能和计算效率。LBFGS算法在实际应用中广泛使用,特别是对于大规模优化问题的求解,是一种非常有效的算法。

链接: 二阶优化方法——牛顿法、拟牛顿法(BFGS、L-BFGS)
链接: L-BFGS算法
链接: 【技术分享】L-BFGS算法
链接: 机器学习基础·L-BFGS算法
链接: 一文读懂L-BFGS算法
链接: PyTorch 学习笔记(七):PyTorch的十个优化器
链接: 二阶梯度优化新崛起,超越 Adam,Transformer 只需一半迭代量
链接: 神经网络的训练可以采用二阶优化方法吗?

代码备份

#pytorch==1.8.1
#transformers==3.1.0
#tensorflow==2.4.1
#keras==2.4.3
import warnings
warnings.filterwarnings("ignore")
import time
import random
from sklearn.metrics import f1_score
import pandas as pd
import numpy as np
np.random.seed(2020)
from tqdm import tqdm,tqdm_notebookimport torch
from  transformers import  *
import torch.nn as nn
import torch.nn.functional as F
torch.manual_seed(2020)
torch.cuda.manual_seed(2020)
torch.backends.cudnn.deterministic = Trueimport time
import warningsimport numpy as np
import pandas as pd
from mealpy.evolutionary_based.GA import BaseGA
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, mean_squared_error
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
import statsmodels.api as sm
from scipy.stats import spearmanr
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
from plotnine import *import torch
import torch.nn as nn
import torch.nn.functional as Ffrom numpy import abs as P
from numpy import square as squa
from numpy import sqrt as sqt#from __functions__ import check
#from utils import residualswarnings.filterwarnings('ignore')
def MAE(y_true, y_pred):return mean_absolute_error(y_true, y_pred)def RMSE(y_true, y_pred):return np.sqrt(mean_squared_error(y_true, y_pred))def MAPE(y_true, y_pred):return 1.0/len(y_true) * np.sum(np.abs((y_pred-y_true)/y_true)) * 100def SMAPE(y_true, y_pred):return 1.0/len(y_true) * np.sum(np.abs(y_pred-y_true) / (np.abs(y_pred)+np.abs(y_true))/2) * 100def CORR(y_true, y_pred):return np.corrcoef(y_true, y_pred)[0][1]def AIC(y_true, y_pred):X = sm.add_constant(y_pred)ols = sm.OLS(y_true, X)ols_res = ols.fit()return ols_res.aicdef BIC(y_true, y_pred):X = sm.add_constant(y_pred)ols = sm.OLS(y_true, X)ols_res = ols.fit()return ols_res.bicdef SpearmanR(y_true, y_pred):tmp = spearmanr(y_true, y_pred)return tmp.correlationclass CorrLoss(nn.Module):def __init__(self):super(CorrLoss,self).__init__()def forward(self, input1, input2):input1 = input1 - torch.mean(input1)input2 = input2 - torch.mean(input2)cos_sim = F.cosine_similarity(input1.view(1, -1), input2.view(1, -1))return 1 - cos_simclass AGBO(nn.Module):def __init__(self):super(AGBO, self).__init__()self.R_d  = torch.tensor(0.5, dtype=torch.float, requires_grad=True)self.X_d  = torch.tensor(0.5, dtype=torch.float, requires_grad=True)self.G_d  = torch.tensor(0.5, dtype=torch.float, requires_grad=True)self.B_d  = torch.tensor(0.5, dtype=torch.float, requires_grad=True)self.R_cd = torch.tensor(0.5, dtype=torch.float, requires_grad=True)self.X_cd = torch.tensor(0.5, dtype=torch.float, requires_grad=True)self.lr_weight = torch.tensor(0.5, dtype=torch.float, requires_grad=True)self.lr_bias = torch.tensor(0.5, dtype=torch.float, requires_grad=True)self.__init_params__()def forward(self, U_ld, P_ld, Q_ld):# Delta_U_d 节点d处变压器阻抗电压降落的纵分量Delta_U_d = (P_ld * torch.abs(self.R_d*9.2+0.8) + Q_ld * torch.abs(self.X_d*15+5)) / U_ld# delta_U_d 节点d处变压器阻抗电压降落的横分量delta_U_d = (P_ld * torch.abs(self.X_d*15+5) - Q_ld * torch.abs(self.R_d*9.2+0.8)) / U_ld# P_d 节点d高压侧的有功功率P_d = P_ld + (torch.pow(P_ld, 2) + torch.pow(Q_ld, 2)) / torch.pow(U_ld, 2) * torch.abs(self.R_d*9.2+0.8) + torch.pow(U_ld, 2) * torch.abs(self.G_d*4e-6+4e-6)# Q_d 节点d高压侧的无功功率Q_d = Q_ld + (torch.pow(P_ld, 2) + torch.pow(Q_ld, 2)) / torch.pow(U_ld, 2) * torch.abs(self.X_d*15+5) + torch.pow(U_ld, 2) * torch.abs(self.B_d*6e-5+2e-5)# U_d 节点d高压侧的电压U_d = torch.sqrt(torch.pow(U_ld+Delta_U_d, 2) + torch.pow(delta_U_d, 2))# Delta_U_cd 支路a上电压降落的纵分量Delta_U_cd = (P_d * torch.abs(self.R_cd*0.495+0.005) + Q_d * torch.abs(self.X_cd*0.495+0.005)) / U_d# delta_U_cd 支路a上电压降落的横分量delta_U_cd = (P_d * torch.abs(self.X_cd*0.495+0.005) - Q_d * torch.abs(self.R_cd*0.495+0.005)) / U_d# Uc 节点c的电压U_c_calc = torch.sqrt(torch.pow(U_d+Delta_U_cd, 2) + torch.pow(delta_U_cd, 2))# outputs = U_c_calc outputs = U_c_calc * (self.lr_weight*0.4+0.8) + (self.lr_bias*1000)return outputsdef __init_params__(self):nn.init.uniform_(self.R_d, 0, 1)nn.init.uniform_(self.X_d, 0, 1)nn.init.uniform_(self.G_d, 0, 1)nn.init.uniform_(self.B_d, 0, 1)nn.init.uniform_(self.R_cd, 0, 1)nn.init.uniform_(self.X_cd, 0, 1)nn.init.uniform_(self.lr_weight, 0, 1)nn.init.uniform_(self.lr_bias, 0, 1)rawdata = pd.read_csv('v20210306.csv')
DEVICE = 'cpu'train_data, test_data = train_test_split(rawdata, test_size=0.25, shuffle=True, random_state=2022)U_ld_train, U_ld_test = train_data['A相电压值L'].values, test_data['A相电压值L'].values
P_ld_train, P_ld_test = train_data['A相有功'].values, test_data['A相有功'].values
Q_ld_train, Q_ld_test = train_data['A相无功'].values, test_data['A相无功'].values
U_c_train, U_c_test = train_data['A相电压值H'].values, test_data['A相电压值H'].values
U_ld_train, U_ld_test = U_ld_train * 10 / 0.38, U_ld_test * 10 / 0.38U_ld_train_tensor, U_ld_test_tensor = torch.tensor(U_ld_train, dtype=torch.float), torch.tensor(U_ld_test, dtype=torch.float)
P_ld_train_tensor, P_ld_test_tensor = torch.tensor(P_ld_train, dtype=torch.float), torch.tensor(P_ld_test, dtype=torch.float)
Q_ld_train_tensor, Q_ld_test_tensor = torch.tensor(Q_ld_train, dtype=torch.float), torch.tensor(Q_ld_test, dtype=torch.float)
U_c_train_tensor, U_c_test_tensor = torch.tensor(U_c_train, dtype=torch.float), torch.tensor(U_c_test, dtype=torch.float)U_ld_train_tensor, U_ld_test_tensor = U_ld_train_tensor.to(DEVICE), U_ld_test_tensor.to(DEVICE)
P_ld_train_tensor, P_ld_test_tensor = P_ld_train_tensor.to(DEVICE), P_ld_test_tensor.to(DEVICE)
Q_ld_train_tensor, Q_ld_test_tensor = Q_ld_train_tensor.to(DEVICE), Q_ld_test_tensor.to(DEVICE)
U_c_train_tensor, U_c_test_tensor = U_c_train_tensor.to(DEVICE), U_c_test_tensor.to(DEVICE)model = AGBO()
model = model.to(DEVICE)epochs = 1000
lr = 5e-3
weight_decay = 1e-6
optimizer = torch.optim.LBFGS([model.R_d, model.X_d, model.G_d, model.B_d, model.R_cd, model.X_cd], lr=lr)
scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', factor=0.1, patience=2)
loss_fn = nn.MSELoss()def closure():optimizer.zero_grad()loss = loss_fn(model(U_ld_train_tensor,P_ld_train_tensor,Q_ld_train_tensor), U_c_train_tensor)loss.backward()return lossall_train_loss, all_test_loss = [], []
for epoch in range(epochs):model.train()optimizer.zero_grad()outputs = model(U_ld_train_tensor, P_ld_train_tensor, Q_ld_train_tensor)train_loss = loss_fn(outputs, U_c_train_tensor)train_loss.backward()optimizer.step(closure)scheduler.step(train_loss)# setting optimazing boundmodel.R_d.data = model.R_d.clamp(0, 1).datamodel.X_d.data = model.X_d.clamp(0, 1).datamodel.G_d.data = model.G_d.clamp(0, 1).datamodel.B_d.data = model.B_d.clamp(0, 1).datamodel.R_cd.data = model.R_cd.clamp(0, 1).datamodel.X_cd.data = model.X_cd.clamp(0, 1).datamodel.lr_weight.data = model.R_cd.clamp(0, 1).datamodel.lr_bias.data = model.R_cd.clamp(0, 1).datawith torch.no_grad():model.eval()outputs_test = model(U_ld_test_tensor, P_ld_test_tensor, Q_ld_test_tensor)test_loss = loss_fn(outputs_test, U_c_test_tensor)all_train_loss.append(float(train_loss.detach().cpu().numpy()))all_test_loss.append(float(test_loss.detach().cpu().numpy()))# verboseif epoch%50 == 0:#print('the epoch is %d with train loss of %f' %(epoch, train_loss.detach().cpu().numpy()))print('the epoch is %d with test loss of %f' %(epoch, test_loss.detach().cpu().numpy()))model.eval()
outputs_train = model(U_ld_train_tensor, P_ld_train_tensor, Q_ld_train_tensor)
outputs_test = model(U_ld_test_tensor, P_ld_test_tensor, Q_ld_test_tensor)lr = LinearRegression()
lr.fit(outputs_train.detach().cpu().numpy().reshape(-1, 1), train_data['A相电压值H'].values.reshape(-1, 1))
outputs_train = lr.predict(outputs_train.detach().cpu().numpy().reshape(-1, 1))
outputs_test = lr.predict(outputs_test.detach().cpu().numpy().reshape(-1, 1))plt.figure(figsize=(8, 6))
plt.plot(train_data['A相电压值H'], outputs_train, 'ok')
plt.plot(test_data['A相电压值H'], outputs_test, '^r')
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
plt.xlabel('Uc', fontdict={'family':'Times new Roman', 'size':24})
plt.ylabel('Ucal', fontdict={'family':'Times new Roman', 'size':24})
plt.legend(['train sample', 'test_sample'])
plt.savefig('agbo-nonlr-45.tiff', dpi=150)
print(np.corrcoef(test_data['A相电压值H'], outputs_test.ravel()))
print('+++ test results +++')
print(MAE(test_data['A相电压值H'], outputs_test))
print(RMSE(test_data['A相电压值H'], outputs_test))
print(MAPE(test_data['A相电压值H'], outputs_test.ravel()))
print(SMAPE(test_data['A相电压值H'], outputs_test.ravel()))

相关文章:

梯度下降优化

二阶梯度优化 1.无约束优化算法1.1最小二乘法1.2梯度下降法1.3牛顿法/拟牛顿法 2.一阶梯度优化2.1梯度的数学原理2.2梯度下降算法 3.二阶梯度优化梯度优化3.1 牛顿法3.2 拟牛顿法 1.无约束优化算法 在机器学习中的无约束优化算法中&#xff0c;除了梯度下降以外&#xff0c;还…...

一起看 I/O | 将 Kotlin 引入 Web

作者 / 产品经理 Vivek Sekhar 我们将在本文为您介绍 JetBrains 和 Google 的早期实验性工作。您可以观看今年 Google I/O 大会中的 WebAssembly 相关演讲&#xff0c;了解更多详情: https://youtu.be/RcHER-3gFXI?t604 应用开发者想要尽可能地在更多平台上最大限度地吸引用户…...

极致呈现系列之:Echarts地图的浩瀚视野(一)

目录 Echarts中的地图组件地图组件初体验下载地图数据准备Echarts的基本结构导入地图数据并注册展示地图数据结合visualMap展示地图数据 Echarts中的地图组件 Echarts中的地图组件是一种用于展示地理数据的可视化组件。它可以显示全国、各省市和各城市的地图&#xff0c;并支持…...

第四章 模型篇:模型训练与示例

文章目录 SummaryAutogradFunctions ()GradientBackward() OptimizationOptimization loopOptimizerLearning Rate SchedulesTime-dependent schedulesPerformance-dependent schedulesTraining with MomentumAdaptive learning rates optim.lr_scheluder Summary 在pytorch_t…...

利用人工智能模型学习Python爬虫

爬虫是一种按照一定的规则&#xff0c;自动地抓取万维网信息的程序或者脚本。 网络爬虫(又称为网页蜘蛛&#xff0c;网络机器人)是其中一种类型。 爬虫可以自动化浏览网络中的信息&#xff0c;当然浏览信息的时候需要按照我们制定的规则进行&#xff0c;这些规则我们称之为网络…...

.Net泛型详解

引言 在我们使用.Net进行编程的过程中经常遇到这样的场景&#xff1a;对于几乎相同的处理&#xff0c;由于入参的不同&#xff0c;我们需要写N多个重载&#xff0c;而执行过程几乎是相同的。更或者&#xff0c;对于几乎完成相同功能的类&#xff0c;由于其内部元素类型的不同&…...

C++ 教程(10)——存储类

存储类定义 C 程序中变量/函数的范围&#xff08;可见性&#xff09;和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C 程序中可用的存储类&#xff1a; autoregisterstaticexternmutablethread_local (C11) 从 C 17 开始&#xff0c;auto 关键字不再是 C 存储…...

vue3+vite+element-plus创建项目,修改主题色

element-plus按需引入&#xff0c;修改项目的主题色 根据官方文档安装依赖 ​npm install -D unplugin-vue-components unplugin-auto-import vite.config.js配置 // vite.config.ts import { defineConfig } from vite import AutoImport from unplugin-auto-import/vite …...

mysql select是如何一步步执行的呢?

mysql select执行流程如图所示 server侧 在8.0之前server存在查询语句对应数据的缓存&#xff0c;不过在实际使用中比较鸡肋&#xff0c;对于更新比较频繁、稍微改点查询语句都会导致缓存无法用到 解析 解析sql语句为mysql能够直接执行的形式。通过词法分析识别表名、字段名等…...

找到距离最近的点,性能最好的方法

要找到距离最近的点并且性能最好&#xff0c;一种常用的方法是使用空间数据结构来加速搜索过程。以下是两个常见的数据结构和它们的应用&#xff1a; KD树&#xff08;KD-Tree&#xff09;&#xff1a;KD树是一种二叉树数据结构&#xff0c;用于对k维空间中的点进行分割和组织…...

vue基础--重点

&#xff01;1、vue的特性 &#xff01;2、v-model 双向数据绑定指令 &#xff08;data数据源变化&#xff0c;页面变化&#xff1b; 页面变化&#xff0c;data数据源也变化&#xff09; 1、v-model 会感知到 框中数据变化 2、v-model 只有在表单元素中使用&#xff0c;才能…...

HarmonyOS元服务端云一体化开发快速入门(上)

一、前提条件 您已使用已实名认证的华为开发者帐号登录DevEco Studio。 请确保您的华为开发者帐号余额充足&#xff0c;账户欠费将导致云存储服务开通失败。 二、选择云开发模板 1.选择以下任一种方式&#xff0c;打开工程创建向导界面。 如果当前未打开任何工程&#xff0c…...

leetcode 279.完全平方数

题目描述 给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#xff0c;其值等于一个整数自乘的积。例如&#xff0c;1、4、9 和 16 都是完全平方数&#xff0c;而 3 和 11 …...

Spring boot ApplicationContext

https://www.geeksforgeeks.org/spring-applicationcontext/ AnnotationConfigApplicationContext container 对象直接标注annotation&#xff1a; Configuration, Component ApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class, AppConf…...

【Python实战】Python采集王者皮肤图片

前言 我们上一篇介绍了&#xff0c;如何采集王者最低战力&#xff0c;本文就来给大家介绍如何采集王者皮肤&#xff0c;买不起皮肤&#xff0c;当个桌面壁纸挺好的。下面&#xff0c;我和大家介绍如何获取数据。 环境使用 python 3.9pycharm 模块使用 requests 模块介绍 re…...

很详细的Django开发入门详解(图文并茂)

1.Django概述 Django是一个开放源代码的Web应用框架&#xff0c;由Python写成。采用了MTV的框架模式&#xff0c;即模型M&#xff0c;视图V和模版T。 Django 框架的核心组件有&#xff1a; 用于创建模型的对象关系映射&#xff1b;为最终用户设计较好的管理界面&#xff1b;…...

Ansible 部署

ansible 自动化运维工具&#xff0c;可以实现批量管理多台&#xff08;成百上千&#xff09;主机&#xff0c;应用级别的跨主机编排工具 特性&#xff1a; 无agent的存在&#xff0c;不要在被控制节点上安装客户端应用 通过ssh协议与被控制节点通信 基于模块工作的&#xff0c…...

【操作系统】计算机操作系统知识点总结

文章目录 前言一、操作系统的概念与发展二、操作系统的结构与功能1、操作系统的结构2、操作系统的功能 三、进程管理1、进程2、进程的创建3、进程管理的实现4、进程控制块 四、内存管理1、内存2、内存管理3、内存管理的实现 五、文件系统1、文件系统2、文件系统的主要任务3、文…...

springmvc整合thymeleaf

概述 Thymeleaf提供了一组Spring集成&#xff0c;使您可以将其用作Spring MVC应用程序中JSP的全功能替代品。 这些集成将使您能够&#xff1a; Controller像使用JSP一样&#xff0c;将Spring MVC 对象中的映射方法转发到Thymeleaf管理的模板。在模板中使用Spring表达式语言&…...

Redis 内存管理机制

Redis作为一个内存数据库&#xff0c;内存资源非常珍贵。因此&#xff0c;Redis引入了3种内存管理机制来释放不必要的内存&#xff0c;包括定期删除、惰性删除和内存淘汰机制。 定期删除 定期删除是Redis内存管理机制的一种&#xff0c;它用于删除过期的键值对。Redis每隔 10…...

Apache Zeppelin系列教程第九篇——Zeppelin NoteBook数据缓存

背景 在使用Zeppelin JDBC Intercepter 对于Hive 数据进行查询过程中&#xff0c;如果遇到非常复杂的sql&#xff0c;查询效率是非常慢 比如&#xff1a; select dt,count(*) from table group by dt做过数据开发的同学都知道&#xff0c;在hive sql查询过程中&#xff0c;hive…...

用代码实现一个简单计算器

作者主页&#xff1a;paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《C语言》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造…...

运维圣经:挖矿木马应急响应指南

目录 挖矿木马简介 挖矿流程 挖矿木马应急响应 一. 隔离被感染主机 二. 确定挖矿进程 三. 挖矿木马清除 1、阻断矿池地址的连接 2、清除挖矿定时任务、启动项等 3、禁用可疑用户 4、定位挖矿木马文件的位置并删除 5、全盘杀毒、加固 挖矿木马简介 挖矿&#xff1a;…...

【Flutter】Flutter 如何获取安装来源信息

文章目录 一、 前言二、 安装来源信息的基本概念1. 什么是安装来源信息2. 为什么我们需要获取安装来源信息 三、 如何在 Flutter 中获取安装来源信息1. 准备工作2. 安装必要的依赖库3. 编写代码获取安装来源信息 四、 完整示例代码五、总结 一、 前言 在这篇文章中&#xff0c…...

Stimulsoft Reports用户手册:Report Designer介绍

Stimulsoft Reports.Net是一个基于.NET框架的报表生成器&#xff0c;能够帮助你创建结构、功能丰富的报表。StimulReport.Net 的报表设计器不仅界面友好&#xff0c;而且使用便捷&#xff0c;能够让你轻松创建所有报表&#xff1b;该报表设计器在报表设计过程中以及报表运行的过…...

跨模态检索论文阅读:Dissecting Deep Metric Learning Losses for Image-Text Retrieval(GOAL)

Dissecting Deep Metric Learning Losses for Image-Text Retrieval 剖析图像文本检索中的深度度量学习损失 2022.10 视觉语义嵌入&#xff08;VSE&#xff09;是图像-文本检索中的一种流行的应用方法&#xff0c;它通过学习图像和语言模式之间的联合嵌入空间来保留语义的相似性…...

贪心算法part5 | ● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间

文章目录 435. 无重叠区间思路思路代码困难 763.划分字母区间思路官方题解代码困难 56. 合并区间思路思路代码 今日收获 435. 无重叠区间 思路 重叠问题都需要先排好序&#xff0c;再贪心 思路代码 func eraseOverlapIntervals(intervals [][]int) int {sort.Slice(interva…...

IMX6ULL裸机篇之SPI实验-ICM20608代码实现

一. SPI 实验 SPI实验&#xff1a;学习如何使用 I.MX6U 的 SPI 接口来驱动 ICM-20608&#xff0c;读取 ICM-20608 的六轴数据。 本文学习 SPI通信实验中&#xff0c;涉及从设备的 SPI代码编写。 之前学习了 SPI 主控芯片代码的编写&#xff0c;如下所示&#xff1a; IMX6ULL…...

51单片机读取DS18B20温度传感器

1.首先我们知道DS18B20是单总线协议&#xff0c;只有一根数据线。所以Data数据线即使发送端又是接收端&#xff0c;同时DS18B20内部接了弱上拉电阻&#xff08;如图一所示&#xff09;&#xff0c;数据线默认为高电平。有了这些概念&#xff0c;我们就能进行下一步。 图一&…...

set/map学习

我们要开始学习map和set的使用&#xff0c;虽然使用更加复杂&#xff0c;但是STL整体的设计&#xff0c;本身就具有很强的前瞻性和延续性&#xff0c;比如说迭代器等&#xff0c;我们顺着文档来看。这也是除了vector之外最重要的容器&#xff0c;当然还有unordered_map 和 unor…...

asp.net获取网站地址/舆情报告范文

1&#xff0e;与运算符与运算符用符号“&”表示&#xff0c;其使用规律如下&#xff1a;两个操作数中位都为1&#xff0c;结果才为1&#xff0c;否则结果为0&#xff0c;例如下面的程序段。public class data13{public static void main(String[] args){int a129;int b128;…...

烟台做网站系统/关键词三年级

在使用vxe-table 下拉选时遇到一个问题选中后值不显示(针对这个问题做一下记录)图:选择前选择后值不显示代码如下<解决方法:给下拉选加change事件 在事件触发时使单元格清除激活状态,然后立刻将该单元格设置为激活状态.<js代码selectChange效果:选择前选择后值显示了...

做进行网站推广赚钱/竞价推广什么意思

在用多线程的时候&#xff0c;里面要用到Spring注入服务层&#xff0c;或者是逻辑层的时候&#xff0c;一般是注入不进去的。具体原因应该是线程启动时没有用到Spring实例不池。所以注入的变量值都为null。 如果在run方法里面加载application.xml&#xff0c;来取得bean时&…...

做网站外包哪家好/网络营销类型有哪些

前言安全保护几乎对于所有的项目都是一个挑战&#xff0c;对于物联网项目更是如&#xff0c;自普及应用以来物联网业内已经发生过多起安全事故。作为物联网通信协议事实标准&#xff0c;MQTT 保持着较高的安全性&#xff0c;提供了多层次的安全设计&#xff1a;传输层&#xff…...

网站建设网站建/百度竞价推广代运营公司

背景描述 EasyNVR的使用者应该都是清楚的了解到&#xff0c;EasyNVR一个强大的功能就是可以进行全平台的无插件直播。主要原因在于rtsp协议的视频流&#xff08;默认是需要插件才可以播放的&#xff09;经由EasyNVR处理可以满足无插件的全平台直播。 经由EasyNVR处理会获取到RT…...

php mysql开发网站开发/百度竞价员

Ubuntu20.04 ROS1. 环境配置2. 创建工作空间3. URDF 机器人建模4. 机器人仿真4.1 机器人 URDF 模型优化4.2 Arbotix rviz 功能仿真4.2.1 配置 Arbotix 控制器4.2.2 导航仿真示例4.3 Gazebo 物理仿真环境搭建1. 环境配置 虚拟机 VMware 安装网址&#xff1a; vmap.sjtu.edu.c…...