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

机器学习周报--文献阅读

文章目录

    • 摘要
    • Abstract
  • 1 文章内容
    • 1.1 模型结构
      • 1.1.1 LSTMAT的结构设置
      • 1.1.2 AWPSO算法优化模型
    • 1.2 实验与结果讨论
      • 1.2.1 处理缺失数据
      • 1.2.2 模型评估指标
      • 1.2.3 比较实验
      • 1.2.4 消融实验(ABLATION EXPERIMENTS)
  • 2相关知识
    • 2.1 自适应权重粒子群优化(AWPSO)算法
    • 2.2 代码
    • 总结

摘要

本周阅读了题目为A Water Quality Prediction Model Based on Long Short-Term Memory Networks and Optimization Algorithms的文章,文章提出了一种基于AWPSO-LSTMAT的预测模型。与之前的SVR、LSTM、CNN-LSTM和CNN-GRU等预测模型相比,通过修改和优化原始算法,AWPSO-LSTMAT的预测效果明显提高。预测PH值、溶解氧(DO)、氨氮(AN)和总磷(TP)的平均绝对误差(MAE),文章所设计的预测模型比其他现有模型具有更高的预测精度和更强的泛化能力。

Abstract

This week, I read the article titled “A Water Quality Prediction Model Based on Long Short-Term Memory Networks and Optimization Algorithms,” which proposes a prediction model based on AWPSO-LSTMAT. Compared with previous prediction models such as SVR, LSTM, CNN-LSTM, and CNN-GRU, the prediction performance of AWPSO-LSTMAT is significantly improved through modifications and optimizations of the original algorithms. In terms of predicting pH, dissolved oxygen (DO), ammonia nitrogen (AN), and total phosphorus (TP), the mean absolute error (MAE) of the proposed model is lower than that of other existing models. The designed prediction model demonstrates higher prediction accuracy and stronger generalization ability.

1 文章内容

1.1 模型结构

1.1.1 LSTMAT的结构设置

水质因子随时间呈现出长周期循环和非线性变化等特征,这使得独立的LSTM模型难以有效地提取趋势特征。虽然单个CNN网络可以有效地提取变化的特征,但它对时间序列数据不敏感,可能无法达到预期的预测结果。因此,本文将CNN的特征提取能力与LSTM对时间序列数据的敏感性相结合。具体来说,在LSTM处理序列信息之前,使用CNN提取数据的主要特征,从而提高预测精度。此外,为了应对评估长时间序列中信息重要性的挑战,在LSTM模型中引入了AT机制,以关注对水质预测更为关键的特征。

LSTMAT模型的结构如下图所示。该模型分为两部分:CNN特征提取和LSTMAT。CNN特征提取部分由2个卷积层和2个最大池化层组成,用于提取水质因子特征,揭示数据关系,去除冗余信息和噪声,从而提高预测精度。LSTMAT部分包括1个重塑层、2个LSTM层、1个注意力层和2个密集层。本节旨在挖掘和学习CNN特征提取后数据的时间特征,通过降维来增强数据特征。此外,CNN特征提取部分包括一个Dropout层,LSTMAT部分包括3个Dropout图层,以减少过拟合。

在这里插入图片描述

1.1.2 AWPSO算法优化模型

模型中某些关键参数的值会影响预测结果的质量。为了优化这些关键参数并减少手动调整的影响,本文引入了AWPSO算法。它将第一层中的LSTM隐藏单元的数量、第二层中的LPTM隐藏单元数量、Dropout层的数量、训练周期的数量和批量大小视为优化变量,以找到全局最优解。在介绍了AWPSO算法后,模型运算的主要过程如下:

  1. 数据标准化
    将实验数据归一化到[0,1]之间的范围内,以提高模型的收敛速度和精度。归一化公式如下: X n o r m = X − X m i n X m a x − X m i n X_{norm}=\frac{X-X_{min}}{X_{max}-X_{min}} Xnorm=XmaxXminXXmin,其中 X n o r m X_{norm} Xnorm是归一化数据;X为原始实验数据; X m i n X_{min} Xmin是原始数据的最小值; X m a x X_{max} Xmax是原始数据的最大值。

  2. 数据拆分
    将预处理后的水质数据按9:1的比例分为训练集和测试集。

  3. 参数初始化
    初始化AWPSO算法,设置相关参数,定义优化参数。搜索维度为5,优化参数定义为第一层LSTM隐藏单元的数量、第二层LSTM隐单元的数量,Dropout层的数量、训练周期的数量和批量大小,并确定其各自的优化范围

  4. 定义适应度函数
    定义适应度函数。本文使用MAPE(平均绝对百分比误差)作为粒子的适应度函数。MAPE计算公式: M A P E = 100 % n ∑ i = 1 n ∣ y ^ i − y i y i ∣ MAPE=\frac{100\%}{n}\sum^n_{i=1}|\frac{\hat y_{i}-y_i}{y_i}| MAPE=n100%i=1nyiy^iyi,其中MAPE是平均绝对百分比误差; y ^ i \hat y_i y^i是模型的预测值;yi是实际值;n是样本数;i是样本索引。

  5. 迭代训练与优化
    将分割后的水质数据分别输入预测模型进行迭代训练。在迭代过程中不断搜索和更新最佳的个人和全局位置及其适应度值。

  6. 检查终止
    检查迭代次数是否已达到终止条件。如果满足终止条件,则将当前优化变量(即最佳参数)输入预测模型进行训练和预测。如果不满足终止条件,则返回步骤4继续更新。

  7. 最终预测的逆归一化
    对输出结果进行逆归一化处理,得到最终的水质预测值。逆归一化公式如下: X = X n o r m ( X m a x − X m i n ) + X m i n X=X_{norm}(X_{max}-X_{min})+X_{min} X=Xnorm(XmaxXmin)+Xmin

AIWPSO-LSTMAT算法的流程图如下图所示
在这里插入图片描述

1.2 实验与结果讨论

1.2.1 处理缺失数据

由于监测站的定期维护和偶尔的设备故障,一些水质数据可能会丢失。为了确保实验的有效性,必须向预测模型提供完整的数据。该论文使用线性插值来处理缺失数据。线性插值公式如下: y k = y ω + ( y r − y ω ) k − ω r − ω y_k=y_\omega+(y_r-y_\omega)\frac{k-\omega}{r-\omega} yk=yω+(yryω)rωkω,其中, k , ω k,\omega k,ω r r r表示时间, y k y_k yk表示时间k处的缺失值; y ω y_\omega yω表示与 y k y_k yk之前的最近时间ω对应的已知数据; y r y_r yr表示与 y k y_k yk之后的最近时间r对应的已知数据。

在完成缺失数据后,数据集以9:1的比例分为训练集和测试集。下图显示了四种类型的水质因子数据,并填写了缺失值。下图所示,四种类型的水质因子数据表现出非线性和非平稳性等特征。

在这里插入图片描述

1.2.2 模型评估指标

为了合理有效地评估模型的预测性能,论文中使用决定系数(R²)平均绝对误差(MAE)和均方根误差(RMSE)来评估预测结果。

  1. 决定系数(R²)
    反映模型拟合数据的准确性,范围从[0,1]。接近1的值表示模型的拟合度更好,而接近0的值表示拟合度较差。计算公式如下:
    R 2 = 1 − ∑ i = 1 n ( y ^ i − y i ) 2 ∑ i = 1 n ( y ˉ i − y i ) 2 R^2=1-\frac{\sum^n_{i=1}(\hat y_i-y_i)^2}{\sum^n_{i=1}(\bar y_i-y_i)^2} R2=1i=1n(yˉiyi)2i=1n(y^iyi)2,其中, y ^ i \hat y_i y^i表示预测的目标变量值, y ˉ i \bar y_i yˉi是测量数据的平均值; y i y_i yi表示目标变量的真值。

  2. MAE
    反映预测值和真实值之间的平均绝对偏差。较小的值表示预测更接近真实值,而较大的值表示差异更大。
    M A E = 1 n ∑ i = 1 n ∣ y ^ i − y i ∣ MAE=\frac{1}{n}\sum^n_{i=1}|\hat y_i-y_i| MAE=n1i=1ny^iyi

  3. RMSE
    测量预测值和真实值之间的偏差。值越接近0表示模型的稳定性越高,而值越大则表示稳定性越差。计算公式如下(参数如上所述): R M S E = 1 n ∑ i = 1 n ( y ^ i − y i ) 2 RMSE=\sqrt {\frac{1}{n}\sum^n_{i=1}(\hat y_i-y_i)^2} RMSE=n1i=1n(y^iyi)2

1.2.3 比较实验

下图为不同模型各因素预测效果比较,通过比较所示的各种模型的预测结果,很明显,与其他模型相比,该论文提出的模型实现了更好的曲线拟合,并且在跳跃数据方面表现良好。

虽然SVR在预测跳跃数据时有优势,其在小值水质因子(氨氮、总磷)的预测曲线波动较大,稳定性较差。LSTM很好地拟合了pH值和溶解氧的实际值,但缺乏捕捉变化特征的能力,导致精度较低,对氨氮和总磷的跳跃点拟合不佳。CNN-LSTM模型结合了CNN和LSTM的优点,比LSTM具有更好的拟合效果。然而,由于在最终的隐藏层和输出层中随机分配了权重,它没有强调更重要特征的影响,导致拟合效果不佳。CNN-GRU模型很好地拟合了小值水质因子,波动最小,但在较大值因子(溶解氧)上表现不佳,与所提出的模型相比,拟合精度较低。

在这里插入图片描述

1.2.4 消融实验(ABLATION EXPERIMENTS)

从下图中的可视化可以看出,与所提出的模型相比,没有AWPSO算法和AT机制的预测曲线与实际曲线的拟合程度较低。

引入AWPSO优化算法可以自适应调整粒子惯性权重,有效地平衡了局部和全局搜索,提高了模型的参数优化能力。因此,MAE和RMSE分别下降了23.225%和17.957%,R2上升了6.704%。当添加AT机制时,该模型侧重于对水质预测更重要的特征,导致MAE和RMSE分别降低了20.134%和17.667%, R 2 R^2 R2增加了6.477%。引入AWPSO算法和AT机制的引入有效地减少了预测误差,提高了模型在水质预测中的性能。

在这里插入图片描述

在这里插入图片描述

AWPSO通过自适应调整惯性权重,平衡全局搜索(避免局部最优)与局部搜索(精细调参),显著优化了LSTM层数、Dropout率等参数。
AT机制通过动态分配注意力权重,使模型聚焦于对预测更重要的时序特征(如污染事件峰值),提升对突变数据的拟合能力。

2相关知识

2.1 自适应权重粒子群优化(AWPSO)算法

粒子群优化(PSO)算法是常用的一种群智能优化算法,在实际应用中具有很大的局限性。它主要模拟鸟群的觅食行为。粒子群算法中的每个粒子都有两个属性:速度(velocity),表示粒子的运动速度;位置(position),表示粒子的运动方向。 每个粒子在搜索空间中独立地搜索最优解,将其自身的最优值视为当前个体最优值,并与整个群共享该个体最优值。通过不断的更新,群体将最优个体值识别为当前的全局最优解。然而,PSO算法具有一定的局限性,例如在搜索的早期阶段容易陷入局部最优,并且在训练迭代期间可能收敛过快。

自适应权重粒子群优化算法(AWPSO)的具体实现步骤:

  1. 初始化参数:设置粒子群大小(种群规模)、最大迭代次数、惯性权重范围、学习因子等参数。
  2. 种群初始化:随机生成初始位置和速度的粒子群。
  3. 适应度计算:计算每个粒子的适应度值,用于评估粒子的优劣。
  4. 更新个体最优和全局最优:比较当前粒子的位置与pbest,更新pbest;在所有粒子的pbest中找出最优的作为gbest。
  5. 速度更新:根据公式 v i ( t + 1 ) = w ⋅ v i ( t ) + c 1 ⋅ r 1 ⋅ ( p b e s t i − x i ( t ) ) + c 2 ⋅ r 2 ⋅ ( g b e s t − x i ( t ) ) v_i(t+1)=w·v_i(t)+c_1·r_1·(pbest_i-x_i(t))+c_2·r_2·(gbest-x_i(t)) vi(t+1)=wvi(t)+c1r1(pbestixi(t))+c2r2(gbestxi(t))更新粒子速度,其中, w w w是惯性权重, c 1 c_1 c1 c 2 c_2 c2是学习因子, r 1 r_1 r1 r 2 r_2 r2是随机数。
  6. 位置更新:根据新的速度更新粒子的位置 x i ( t + 1 ) = x i ( t ) + v i ( t + 1 ) x_i(t+1)=x_i(t)+v_i(t+1) xi(t+1)=xi(t)+vi(t+1)
  7. 惯性权重和学习因子调整:根据种群的进化状态或粒子的适应度动态调整惯性权重和学习因子。例如,可以采用线性递减、非线性递减或基于种群多样性的自适应调整策略。
  8. 检查终止条件:判断是否达到最大迭代次数或满足收敛精度,如果是,则输出最优解;否则,继续迭代
import numpy as npdef objective_function(x):# 定义目标函数return np.sum(x ** 2)# 参数初始化:设置粒子群大小、维度、最大迭代次数、惯性权重范围、学习因子和边界范围。
#
class AWPSO:def __init__(self, n_particles, dimensions, max_iter, w_min, w_max, c1, c2, bounds):self.n_particles = n_particlesself.dimensions = dimensionsself.max_iter = max_iterself.w_min = w_minself.w_max = w_maxself.c1 = c1self.c2 = c2self.bounds = bounds# 初始化粒子位置和速度self.X = np.random.uniform(bounds[0], bounds[1], (n_particles, dimensions))self.V = np.random.uniform(-1, 1, (n_particles, dimensions))# 初始化个体最优和全局最优self.pbest = self.X.copy()self.pbest_fitness = np.array([objective_function(x) for x in self.pbest])self.gbest_idx = np.argmin(self.pbest_fitness)self.gbest = self.pbest[self.gbest_idx]

惯性权重更新:根据当前迭代次数动态调整惯性权重。
速度和位置更新:根据速度更新公式调整粒子速度,并更新粒子位置。
边界处理:确保粒子位置在预定义的边界范围内。
适应度计算:计算每个粒子的适应度值。
个体最优和全局最优更新:根据适应度值更新个体最优和全局最优位置。

    def optimize(self):for t in range(self.max_iter):# 更新惯性权重w = self.w_max - (self.w_max - self.w_min) * t / self.max_iter# 更新速度和位置r1, r2 = np.random.rand(2)self.V = w * self.V + self.c1 * r1 * (self.pbest - self.X) + self.c2 * r2 * (self.gbest - self.X)self.X = self.X + self.V# 边界处理self.X = np.clip(self.X, self.bounds[0], self.bounds[1])# 计算适应度fitness = np.array([objective_function(x) for x in self.X])# 更新个体最优update_mask = fitness < self.pbest_fitnessself.pbest[update_mask] = self.X[update_mask]self.pbest_fitness[update_mask] = fitness[update_mask]# 更新全局最优self.gbest_idx = np.argmin(self.pbest_fitness)self.gbest = self.pbest[self.gbest_idx]return self.gbest, objective_function(self.gbest)# 参数设置
n_particles = 30
dimensions = 2
max_iter = 100
w_min = 0.4
w_max = 0.9
c1 = 2.0
c2 = 2.0
bounds = (-5, 5)# 运行AWPSO算法
awpso = AWPSO(n_particles, dimensions, max_iter, w_min, w_max, c1, c2, bounds)
best_position, best_fitness = awpso.optimize()print("最优解位置:", best_position)
print("最优解适应度:", best_fitness)

在这里插入图片描述

2.2 代码

模型构建(CNN + LSTM + Attention)

import torch
import torch.nn as nn# 自定义注意力机制层
class AttentionLayer(nn.Module):def __init__(self, input_dim):super().__init__()self.W = nn.Linear(input_dim, 1)self.softmax = nn.Softmax(dim=1)def forward(self, x):# x shape: (batch_size, seq_len, input_dim)att_weights = self.softmax(self.W(x).squeeze(-1))  # (batch_size, seq_len)weighted = torch.sum(x * att_weights.unsqueeze(-1), dim=1)  # (batch_size, input_dim)return weighted# 定义完整模型
class AWPSOLSTMAT(nn.Module):def __init__(self, input_dim=4, lstm_units1=64, lstm_units2=32, dropout_rate=0.2):super().__init__()# CNN特征提取self.cnn = nn.Sequential(nn.Conv1d(input_dim, 64, kernel_size=3, padding=1),nn.ReLU(),nn.MaxPool1d(2),nn.Dropout(dropout_rate),nn.Conv1d(64, 64, kernel_size=3, padding=1),nn.ReLU(),nn.MaxPool1d(2),)# LSTM + Attentionself.lstm1 = nn.LSTM(input_size=64, hidden_size=lstm_units1, batch_first=True)self.lstm2 = nn.LSTM(input_size=lstm_units1, hidden_size=lstm_units2, batch_first=True)self.attention = AttentionLayer(lstm_units2)# 全连接层self.fc = nn.Sequential(nn.Linear(lstm_units2, 32),nn.ReLU(),nn.Dropout(dropout_rate),nn.Linear(32, 1))def forward(self, x):# x shape: (batch_size, seq_len, input_dim)x = x.permute(0, 2, 1)  # (batch_size, input_dim, seq_len)x = self.cnn(x)         # (batch_size, 64, pooled_seq_len)x = x.permute(0, 2, 1)  # (batch_size, pooled_seq_len, 64)x, _ = self.lstm1(x)    # (batch_size, pooled_seq_len, lstm_units1)x, _ = self.lstm2(x)    # (batch_size, pooled_seq_len, lstm_units2)x = self.attention(x)   # (batch_size, lstm_units2)x = self.fc(x)          # (batch_size, 1)return x.squeeze(-1)

模型训练与评估

# 初始化模型
model = AWPSOLSTMAT(input_dim=4, lstm_units1=64, lstm_units2=32, dropout_rate=0.2)
criterion = nn.L1Loss()  # MAE
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)# 训练循环
def train(model, dataloader, epochs=100):model.train()for epoch in range(epochs):total_loss = 0for X_batch, y_batch in dataloader:optimizer.zero_grad()outputs = model(X_batch)loss = criterion(outputs, y_batch)loss.backward()optimizer.step()total_loss += loss.item()print(f'Epoch {epoch+1}, Loss: {total_loss/len(dataloader):.4f}')# 评估函数
def evaluate(model, dataloader):model.eval()total_mae = 0with torch.no_grad():for X_batch, y_batch in dataloader:outputs = model(X_batch)total_mae += criterion(outputs, y_batch).item()return total_mae / len(dataloader)# 训练并测试
train(model, train_loader, epochs=50)
test_mae = evaluate(model, test_loader)
print(f'Test MAE: {test_mae:.4f}')

总结

文提出基于AWPSO - LSTMAT的水质预测模型,以周河溪屯桥监测站数据验证。与主流模型对比,该模型预测精度高、泛化能力强,在水质管理、预警和决策中作用显著,可用于周河水质趋势预测平台,为当地水环境管理提供参考。

相关文章:

机器学习周报--文献阅读

文章目录 摘要Abstract 1 文章内容1.1 模型结构1.1.1 LSTMAT的结构设置1.1.2 AWPSO算法优化模型 1.2 实验与结果讨论1.2.1 处理缺失数据1.2.2 模型评估指标1.2.3 比较实验1.2.4 消融实验&#xff08;ABLATION EXPERIMENTS&#xff09; 2相关知识2.1 自适应权重粒子群优化&#…...

硬件地址反序?用位操作为LED灯序“纠偏”。反转二进制数即可解决

特别有意思&#xff0c;LED的灯序与其硬件地址刚好相反&#xff0c;没办法直接通过加1实现二进制进位的亮灯操作&#xff0c;查了一些资料说用数组和switch实现&#xff0c;觉得太麻烦了&#xff0c;思索良久&#xff0c;就想到了反转二进制数解决这个问题。 reverse_bits( )是…...

A* floyd算法 bellman-ford

求源点到目标点最短距离 排序的里面要加上与目标点一个预估距离,与dj算法差距只有这儿 预估要小于等于真实的最短距离,吸引力要适当 越接近实际距离越快 #include<bits/stdc.h> using namespace std;// 方向向量&#xff1a;上、右、下、左 const vector<int> …...

【数据挖掘】KL散度(Kullback-Leibler Divergence, KLD)

KL散度&#xff08;Kullback-Leibler Divergence, KLD&#xff09; 是衡量两个概率分布 P 和 Q之间差异的一种非对称度量。它用于描述当使用分布 Q 逼近真实分布 P 时&#xff0c;信息丢失的程度。 KL散度的数学定义 给定两个离散概率分布 P(x)和 Q(x)&#xff0c;它们在相同的…...

Linux shell 进度条

概述 在 Linux Shell 中实现一个简单的进度条可以通过 printf 命令结合特殊字符来实现&#xff0c;以下是一个示例脚本&#xff0c;它模拟了一个从 0% 到 100% 的进度条。 作用 反馈任务进度&#xff1a;让用户直观了解任务执行的进展情况&#xff0c;比如文件拷贝、系统更新…...

ctfshow web刷题记录

RCE 第一题 eval代码执行 &#xff1a; 1、使用system 加通配符过滤 ?csystem("tac%20fl*") ; 2、反字节执行 xxx %20 echo 反字节 3、变量转移 重新定义一个变量 让他代替我们执行 4、伪协议玩法 ?cinclude$_GET[1]?>&1php://filter/readc…...

leetcode日记(101)填充每个节点的下一个右侧节点指针Ⅱ

意料之中有这题&#xff0c;将之前的思路换一下即可&#xff0c;层序遍历的思路将record&#xff08;记录下一个循环的次数&#xff09;手动加减。 /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node* next;Node() : val(0), left(NULL)…...

大语言模型微调和大语言模型应用的区别?

1. 基本概念 微调&#xff08;Fine-tuning&#xff09; 定义&#xff1a;微调是指在预训练大语言模型的基础上&#xff0c;通过在特定领域或任务的数据上进一步训练&#xff0c;从而使模型在该特定任务上表现更优。 目的&#xff1a;适应具体的任务需求&#xff0c;比如法律文…...

Leetcode-131.Palindrome Partitioning [C++][Java]

目录 一、题目描述 二、解题思路 【C】 【Java】 Leetcode-131.Palindrome Partitioninghttps://leetcode.com/problems/palindrome-partitioning/description/131. 分割回文串 - 力扣&#xff08;LeetCode&#xff09;131. 分割回文串 - 给你一个字符串 s&#xff0c;请你…...

DeepSeek:开启机器人智能化的革命性突破

引言 在2025年全球机器人产业格局中&#xff0c;中国AI公司深度求索&#xff08;DeepSeek&#xff09;凭借开源机器人智能控制系统DeepSeek-R1&#xff0c;正在掀起一场从底层算法到应用生态的技术革命。不同于传统机器人依赖预设程序的局限&#xff0c;DeepSeek通过深度推理能…...

解决load()文件报错zipfile.BadZipFile: File is not a zip file

报错如下图&#xff1a; 有可能是资源没有关闭造成了错误&#xff0c;这个网上已经有很多解决方案了&#xff0c;大家可自行查阅。 如果你在别的地方都没有找到解决问题&#xff0c;那么可能是以下这种情况。 1、描述 我在服务器上的代码load()加载文件时&#xff0c;出现了…...

【Tools】Visual Studio Code安装保姆级教程(2025版)

00. 目录 文章目录 00. 目录01. Visual Studio Code概述02. Visual Studio Code下载03. Visual Studio Code安装04. Visual Studio Code配置05. 附录 01. Visual Studio Code概述 Visual Studio Code&#xff08;简称 VS Code&#xff09;是由微软开发的一款免费、开源且跨平台…...

Python库安装报错解决思路以及机器学习环境配置详细方案

文章目录 概要第三方库gdalmahotasgraphviznltk-datalazypredictscikit-surprisenb_extensions 机器学习GPU-torch安装torch_geometric安装ubuntu安装显卡驱动dlib安装torch-cluster、torch-scatter、torch-sparse和torch-geometricYOLOapextensorflow-gpu Python && P…...

ETIMEDOUT 网络超时问题

根据日志显示&#xff0c;你遇到的 ​**ETIMEDOUT 网络超时问题** 是由于 npm 无法连接到企业内部的 Nexus 仓库&#xff08;http://192.168.55.12:8001&#xff09;导致的。以下是具体原因和解决方案&#xff1a; 一、问题根源 ​Nexus 仓库不可达 日志中所有依赖包均尝试从 h…...

superset部署记录

具备网络条件的&#xff0c;完全可以一键部署&#xff0c;不需要折腾。网络条件不具备时&#xff0c;部署记录留存备查。 1、正常模式 详细介绍参考&#xff1a;【开源项目推荐】Apache Superset——最优秀的开源数据可视化与数据探索平台-腾讯云开发者社区-腾讯云 (tencent.c…...

todolist docker 小工具

参考链接 前排提示 没有中文&#xff0c;可使用浏览器 翻译 前提 安装docker安装docker-compose 下载仓库 git clone https://github.com/JordanKnott/taskcafe进行安装 cd taskcafe docker-compose -p taskcafe up -d服务启动后会监听在 3333 端口上&#xff0c;通过浏览器…...

PowerToys:解锁Windows生产力的终极武器

欢迎来到涛涛聊AI。今天想着把win键和加号的组合键映射为win键和Q键盘。经过搜索发现PowerToys。 在数字化办公的浪潮中&#xff0c;效率是职场人永恒的追求。微软推出的 PowerToys 作为Windows官方系统强化工具&#xff0c;凭借其强大的功能和开源免费的特性&#xff0c;已成为…...

内存管理:

我们今天来学习一下内存管理&#xff1a; 1. 内存分布&#xff1a; 我们先来看一下我们下面的图片&#xff1a; 这个就是我们的内存&#xff0c;我们的内存分为栈区&#xff0c;堆区&#xff0c;静态区&#xff0c;常量区&#xff1b; 我们的函数栈帧开辟消耗的内存就是我们…...

ElementUI 表格中插入图片缩略图,鼠标悬停显示大图

如何在 ElementUI 的表格组件 Table 中插入图片缩略图&#xff0c;通过鼠标悬停显示大图&#xff1f;介绍以下2种方式&#xff1a; 方法1&#xff1a;直接在模板元素中插入 <template><el-table :data"tableData"><el-table-column label"图片…...

从被动响应到主动预见:智能可观测性技术的变革与实践

思维导图 一、引言 &#x1f303; 想象一下&#xff0c;在一个深夜 &#x1f319;&#xff0c;你的关键业务系统突然出现故障 &#x1f6a8;。传统情况下&#xff0c;你可能会收到大量不相关的告警 &#x1f4f1;&#x1f4ac;&#x1f4ac;&#x1f4ac;&#xff0c;然后花费…...

【Linux】五种 IO 模型与非阻塞 IO

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; 重新理解 IO&#x1f98b; 为什么说网络问题的本质是 I/O 问题&#xff1f;&#x1f380; 从数据流动看网络通信&#x1f380; 网络 I/O 的瓶颈 &#x1f…...

从零开始开发纯血鸿蒙应用之无框截图

从零开始开发纯血鸿蒙应用 〇、前言二、元素定位1、理论依据2、使用指导 三、认识 ComponentSnapshot1、get 方法2、获取 ComponentSnapshot 实例 四、实现组件截图1、掌握图片编码能力2、保存到图库3、实现组件截图 〇、前言 截图&#xff0c;或者说截屏&#xff0c;已经是每…...

【商城实战(36)】UniApp性能飞升秘籍:从渲染到编译的深度优化

【商城实战】专栏重磅来袭&#xff01;这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建&#xff0c;运用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用户、商品、订单等核心模块开发&#xff0c;再到性能优化、安全加固、多端适配&#xf…...

无人自助空间智能管理系统解决方案(深度优化版)

无人自助空间智能管理系统解决方案&#xff08;深度优化版&#xff09; 一、行业痛点与系统价值 传统管理依赖人工&#xff1a; 人工管理模式下&#xff0c;易出现人为失误&#xff0c;如计费错误、资源分配不当等。同时&#xff0c;人工操作效率低下&#xff0c;在高峰时段…...

pycharm配置镜像源【pycharm最新版(23.2.5及以上)方法】

经常遇到pycharm中无法安装或者安装慢的问题&#xff0c;纠结了好久&#xff0c;终于找到这个解决办法了。 为什么要配置镜像源&#xff1a; 因为Python的包管理工具pip一般从PyPI&#xff08;Python Package Index&#xff09;下载安装包&#xff0c;但是PyPI位于国外&#x…...

探索ima.copilot:个人知识库搭建的AI新利器

在信息爆炸的时代&#xff0c;知识的积累与管理成为了个人发展的关键。面对海量的科研文献、工作资料和各类信息&#xff0c;如何高效地构建属于自己的知识体系&#xff0c;是许多人面临的挑战。ima.copilot这款AI工具的出现&#xff0c;为解决这一难题提供了新的思路。它凭借强…...

向量数据库技术系列五-Weaviate介绍

一、前言 Weaviate 是由德国公司 SeMI Technologies 开发的开源向量搜索引擎数据库。它结合了向量搜索和图数据库技术&#xff0c;旨在为 AI 应用提供高效的数据存储和检索能力。具有以下的特点&#xff1a; 高性能向量搜索 Weaviate 支持高效的向量索引和近似最近邻&#x…...

1.Qt SDK 的下载和安装

1Qt 下载官⽹&#xff1a; http://download.qt.io/archive/qt/ 2版本自行选择 3下载对应版本的.exe文件 4下载包下载完成 5双击.exe文件&#xff0c;默认下一步&#xff0c;要注册一个qt的账户 6记住程序安装的位置&#xff0c;后面要配置环境变量 7勾3个&#xff08;组件自行…...

光场中的核心概念:Macro Pixel与SAI的深度解析与实例应用

一、概念详解&#xff1a;从硬件到算法的核心要素 Macro Pixel&#xff08;宏像素&#xff09; Macro Pixel是光场相机的硬件核心单元&#xff0c;由微透镜阵列覆盖的一组传感器子像素构成。每个微透镜对应一个宏像素&#xff0c;其子像素分别记录通过该微透镜不同区域的光线方…...

机器学习(吴恩达)

一, 机器学习 机器学习定义: 计算机能够在没有明确的编程情况下学习 特征: 特征是描述样本的属性或变量&#xff0c;是模型用来学习和预测的基础。如: 房屋面积, 地理位置 标签: 监督学习中需要预测的目标变量&#xff0c;是模型的输出目标。如: 房屋价格 样本: 如: {面积100㎡…...

Ubuntu 20.04 + mysql 8 默认密码问题

问题描述&#xff1a; Ubuntu20.04安装完mysql8之后无法登录&#xff0c;不知道密码 mysql -u root 原因&#xff1a; 系统默认自动配置好了用户和强密码 解决办法&#xff1a; sudo cat /etc/mysql/debian.cnf查看该文件 利用上面的user 和 passwd 即可登录mysql mysql …...

私有云大数据部署:从开发到生产(Docker、K8s、HDFS/Flink on K8s)

1. 引言 在企业级大数据架构中,私有云部署成为了许多企业的首选,尤其是对数据安全性、合规性、资源控制要求较高的场景。相比于公有云,私有云具备更强的灵活性,能够根据业务需求进行定制化优化。本文将探讨如何在私有云环境下构建大数据平台,包括 Docker 容器化、Kuberne…...

使用DeepSeek和墨刀AI,写PRD文档、画原型图的思路、过程及方法

使用DeepSeek和墨刀AI&#xff0c;写PRD文档、画原型图的思路、过程及方法 现在PRD文档要如何写更高效、更清晰、更完整&#xff1f; 还是按以前的思路写PRD&#xff0c;就还是以前的样子。 现在AI这么强大&#xff0c;产品经理如何使用DeepSeek写PRD文档&#xff0c;产品经…...

拥有一台云服务器能做什么呢?

拥有一台云服务器就像拥有了一台24小时在线的远程电脑&#xff0c;你可以通过互联网随时随地管理它。它的用途非常广泛&#xff0c;无论是个人学习、开发测试&#xff0c;还是企业级应用部署&#xff0c;都能发挥重要作用。以下是常见的应用场景&#xff0c;按需求分类整理&…...

4大观点直面呈现|直播回顾-DeepSeek时代的AI算力管理

直播回顾 2025年2月21日晚上9点30分&#xff0c; 我们迎来了新春后的首场人工智能三人行宣讲活动。 这场直播聚焦于Deepseek开源大模型&#xff0c; 探讨了其对AI算力、算法、数据及应用带来的新发展。 本次直播邀请到了上海赞奇的总经理俞阁总和速石科技陈琳涛&#xff0c;…...

DBeaver安装步骤及连接数据库

一、DBeaver安装步骤 1、双击安装文件“dbeaver-ce-21.3.3-x86_64-setup.exe”&#xff0c;进入安装界面 2、点击ok》下一步》我接受&#xff0c;选择下图选项&#xff0c;为此所有用户使用 3、点击下一步&#xff0c;将重新弹出安装开始界面 4、点击ok》下一步》我接受&…...

玩转python:通俗易懂掌握高级数据结构-collections模块之UserDict

引言 UserDict是Python中collections模块提供的一个强大工具&#xff0c;它是dict的封装类&#xff0c;允许用户自定义字典的行为。通过继承UserDict&#xff0c;开发者可以轻松扩展字典的功能&#xff0c;实现自定义的字典逻辑。本文将详细介绍UserDict的关键用法和特性&…...

如何解决ChatGPTplus/pro o1/o3模型无法识别图片或者文件,限制次数?

你是否遇到ChatGPTplus无法识别图片、或者无法识别文件&#xff0c;甚至回答很简短&#xff0c;o1不思考&#xff0c;GPT-4o不能联网、分析图片和处理文件&#xff01;感觉非常敷衍。本文教你如何确定自己的账号是否被降智&#xff1b;教你如何降智的原因&#xff1b;教你解决降…...

96.HarmonyOS NEXT工具类设计模式教程:最佳实践与实现

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT工具类设计模式教程&#xff1a;最佳实践与实现 1. 工具类设计原则 1.1 基本原则 原则说明示例单一职责每个类只负责一个功能Win…...

springboot+vue如何前后端联调,手搓前后端分离项目

我们首先在前端安装axios&#xff0c;这个npm就可以&#xff01;下载完成后。我们用我们之前的页面&#xff0c;然后写一个card&#xff0c;在一个card里面渲染我们的用户数据&#xff0c;我们先写一个查询所有用户信息的一个效果&#xff01; <el-card class"box-card…...

git备份or打补丁

起因 在工作中使用git pull突然发现仓库出现了找不到代码库问题&#xff0c;但是这个时候有个对策又急着需要&#xff0c;于是乎&#xff0c;就需要备份&#xff0c;拷贝给另一个工程师输出。 git 打补丁操作 工程师A生成补丁文件 touch a.txtgit add a.txtgit commit -m &qu…...

游戏成瘾与学习动力激发研究——多巴胺脉冲式释放与奖赏预测误差机制的神经科学解析

多巴胺脉冲式释放与奖赏预测误差机制的神经科学解析 一、核心概念 多巴胺(Dopamine) 一种关键神经递质,主要功能是调节动机、奖赏学习和行为强化。它并非直接产生“快乐感”,而是驱动“寻求奖赏”的行为动机。 脉冲式释放(Phasic Release) 多巴胺神经元以短暂、高频的爆…...

【C/C++】最长回文子串(leetcode T5)

核心考点&#xff1a;回文字符串匹配中心扩展法 题目描述 给你一个字符串 s&#xff0c;找到 s 中最长的 回文 子串。 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;"aba" 同样是符合题意的答案。…...

表的操作以及增删查改

1. 表的操作 1.1 查看所有表 show tables; 1. 2 创建表 CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_namefield datatype [ 约束 ] [comment 注解内容 ][, field datatype [ 约束 ] [comment 注解内容 ]] ...) [engine 存储引擎 ] [character set 字符集 ] [collate …...

【人工智能基础2】Tramsformer架构、自然语言处理基础、计算机视觉总结

文章目录 七、Transformer架构1. 替代LSTM的原因2. Transformer架构&#xff1a;编码器 - 解码器架构3. Transformer架构原理 八、自然语言处理基础1. 语言模型基本概念2. 向量语义3. 预训练语言模型的基本原理与方法4. DeepSeek基本原理 九、计算机视觉 七、Transformer架构 …...

Python游戏开发自学指南:从入门到实践(第四天)

Python不仅适用于数据分析、Web开发和自动化脚本&#xff0c;还可以用于游戏开发&#xff01;虽然Python不是传统意义上的游戏开发语言&#xff0c;但其简洁的语法和丰富的库使其成为初学者学习游戏开发的绝佳选择。本文将为你提供一份全面的Python游戏开发自学指南&#xff0c…...

向量数据库技术系列四-FAISS介绍

一、前言 FAISS&#xff08;Facebook AI Similarity Search&#xff09;是由Facebook AI Research开发的一个开源库&#xff0c;主要用于高效地进行大规模相似性搜索和聚类操作。主要功能如下&#xff1a; 向量索引与搜索&#xff1a;FAISS提供了多种索引和搜索向量的方法&…...

【网络安全 | 漏洞挖掘】价值14981$的Google点击劫持漏洞

未经许可,不得转载。 文章目录 点击劫持前言漏洞1攻击场景漏洞2攻击场景漏洞3攻击场景漏洞4攻击场景漏洞5攻击场景漏洞6攻击场景点击劫持 点击劫持是一种恶意的用户界面攻击技术,也被称为 “UI 覆盖攻击” 或 “透明劫持”。 攻击者通过创建一个看似正常的网页,并在其中嵌…...

CMake 保姆级教程

CMake 是一个跨平台的构建工具&#xff0c;用于生成适合不同平台和编译器的构建系统文件&#xff08;如 Makefile 或 Visual Studio 项目文件&#xff09;。 在 Windows 下使用 CMake 构建项目时&#xff0c;CMake 会根据 CMakeLists.txt 文件生成适合 Windows 的构建系统文件&…...

IntelliJ IDEA 2023.3.1安装指南从下载到配置的完整教程(附资源下载)

安装 IntelliJ IDEA 2023.3.1 非常简单&#xff0c;以下是详细的安装步骤&#xff0c;适用于 Windows、macOS 和 Linux 系统。 1. 下载 IntelliJ IDEA IntelliJ IDEA下载链接&#xff1a;https://pan.quark.cn/s/3ad975664934 选择适合你的操作系统的版本&#xff1a; Ultimat…...