【通俗理解】AI的两次寒冬:从感知机困局到深度学习前夜
AI的两次寒冬:从感知机困局到深度学习前夜
引用(中英双语)
- 中文:
“第一次AI寒冬,是因为感知机局限性被揭示,让人们失去了对算法可行性的信心。”
“第二次AI寒冬,则是因为专家系统的局限性和硬件成本的高企,触发资金与热情的退潮。”- 英文:
“The first AI winter was triggered by the limitations of the perceptron, which shattered faith in the feasibility of these algorithms.”
“The second AI winter was driven by the limits of expert systems and high hardware costs, causing a retreat of funding and enthusiasm.”
关键词:
#AI寒冬
#感知机
#梯度下降
#神经网络
#符号主义
#专家系统
#深度学习
#过拟合
#软硬件瓶颈
#CSDN
具体实例与推演
假设我们需要分析一个简单的感知机模型在不同维度下的表现,并观察它在多层网络中的表现。当我们试图用传统的感知机解决非线性问题时,就会遭遇无法收敛的困境。这种尴尬在20世纪60年代末与70年代初集中爆发,也埋下了第一次AI寒冬的种子。
-
步骤:
- 建立单层感知机模型并尝试解决异或(XOR)等非线性问题。
- 引入多层网络(BP算法),看其在复杂数据集上的表现。
- 讨论参数规模、硬件计算能力与算法局限性,探寻AI寒冬的成因。
-
应用公式:
y = θ ( ∑ i w i x i + b ) y = \theta\Bigl(\sum_{i} w_i x_i + b\Bigr) y=θ(i∑wixi+b)
E = 1 2 ∑ ( y pred − y true ) 2 E = \frac{1}{2}\sum (y_{\text{pred}} - y_{\text{true}})^2 E=21∑(ypred−ytrue)2
w i ← w i − η ∂ E ∂ w i w_i \leftarrow w_i - \eta \frac{\partial E}{\partial w_i} wi←wi−η∂wi∂E
Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\Bigl(\frac{QK^T}{\sqrt{d_k}}\Bigr)V Attention(Q,K,V)=softmax(dkQKT)V
第一节:感知机与第一次AI寒冬
1. 感知机模型的公式解释与案例
1.1 感知机模型
感知机模型公式 | 通俗解释 |
---|---|
y = θ ( ∑ i w i x i + b ) y = \theta\Bigl(\sum_{i} w_i x_i + b\Bigr) y=θ(i∑wixi+b) | 输出 (y) 类似一个“是否通过考核”的判定,(\theta(\cdot)) 是阶跃函数。 |
变量释义 | |
( w_i ) : 权重 | 像评委对各项打分的权重,决定各因素影响大小 |
( x_i ) : 输入 | 参赛选手在各项测试中的成绩 |
( b ) : 偏置 | 顶层政策或特殊加分项 |
( \theta(\cdot) ) : 激活函数 | 类似及格线,只要超过这个线就“通过”,否则就是“不通过” |
1.2 感知机的应用意义和缺点
- 应用意义:感知机是神经网络历史的开端,提供了一个将输入线性组合后进行分类的基石。
- 缺点:无法解决线性不可分问题,例如XOR异或问题。该问题在1969年Minsky和Papert的著作中被深度剖析,导致了社会对感知机的失望和第一波“AI寒冬”。
打比方:
- 如果把“线性可分”比作普通的“直线划分”,那么感知机就像一条简单直线,只能把二维平面分成两个区域。如果数据呈现“弯曲”的分界线,感知机就无能为力了。
第二节:BP算法与第二次AI寒冬
2.1 BP(反向传播)核心公式
公式 | 作用 |
---|---|
E = 1 2 ∑ ( y pred − y true ) 2 E = \frac{1}{2}\sum (y_{\text{pred}} - y_{\text{true}})^2 E=21∑(ypred−ytrue)2 | 均方误差 (MSE)度量预测值与真实值之差距 |
w i ← w i − η ∂ E ∂ w i w_i \leftarrow w_i - \eta \frac{\partial E}{\partial w_i} wi←wi−η∂wi∂E | 梯度下降更新权重,减少预测误差 |
变量释义 | |
( E ) : 误差函数 | 像“考核指标”,越小越好 |
( y_{\text{pred}} ) : 预测输出 | 神经网络对输入数据给出的判断 |
( y_{\text{true}} ) : 真实值 | 数据集中样本对应的正确标签 |
( \eta ) : 学习率 | 步伐大小,过大容易振荡,过小收敛慢 |
2.2 反向传播的应用价值与局限
- 应用价值:在多层网络中,BP算法让网络能学习非线性映射,大大扩展了感知机的应用范围,为后续深度学习奠定基础。
- 局限:在硬件计算能力不足、训练数据不足以及网络深度受限时,BP算法会面临梯度消失或振荡等问题。加之80年代后期到90年代初期专家系统热潮退却,资金和人力投入也随之骤降,引发了第二次“AI寒冬”。
打比方:
- BP算法就像在“后厨”中不断试错调味,想让菜肴更接近理想口味。但如果人手不足、食材匮乏(数据少)、炉火(硬件计算能力)不够旺,再好的厨艺(BP算法)也难以做出让人满意的菜。
第三节:公式探索与推演运算
在探讨神经网络的核心数学时,我们常会对照其他相关公式。这里列出一些常见公式,并对比其异同。
3.1 常见相似公式对比
公式/定律 | 共同点 | 不同点 |
---|---|---|
Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\Bigl(\frac{QK^T}{\sqrt{d_k}}\Bigr)V Attention(Q,K,V)=softmax(dkQKT)V | 都是神经网络中常见机制,基于加权和。 | Attention主要用于对序列信息做加权,BP用于端到端的梯度优化。 |
Cauchy-Schwarz不等式 | 都能对运算范围进行一定限制或提供判断标准。 | C-S不等式在向量空间中度量相似度,神经网络偏重训练误差或注意力机制。 |
热力学第二定律 | 都反映“不可逆性”或“单调变化”的概念。 | 热力学描述宏观世界熵增,AI训练则是误差下降,与统计学习理论紧密相关。 |
专家系统推理规则 | 都关注“条件-结论”的推断,涉及系统的“知识与推断框架”。 | 专家系统基于规则库,神经网络基于数据驱动;二者在某些应用侧面相互补充。 |
3.2 推导过程(以梯度下降为例)
- 定义误差函数
E = 1 2 ∑ ( y pred − y true ) 2 E = \frac{1}{2}\sum (y_{\text{pred}} - y_{\text{true}})^2 E=21∑(ypred−ytrue)2 - 计算梯度
∂ E ∂ w i = ∑ ( y pred − y true ) ⋅ ∂ y pred ∂ w i \frac{\partial E}{\partial w_i} = \sum (y_{\text{pred}} - y_{\text{true}}) \cdot \frac{\partial y_{\text{pred}}}{\partial w_i} ∂wi∂E=∑(ypred−ytrue)⋅∂wi∂ypred - 参数更新
w i ← w i − η ∂ E ∂ w i w_i \leftarrow w_i - \eta \frac{\partial E}{\partial w_i} wi←wi−η∂wi∂E
在AI第二次寒冬时期,网络结构较浅,硬件性能有限,导致实际训练时收敛慢或难以成功;而深层网络更容易出现梯度消失,这也是当时人们对神经网络失望的重要原因之一。
第四节:核心代码与可视化
以下示例代码使用加利福利亚数据集,构建一个简单的多层感知机,演示网络训练过程及可视化。我们将使用多种可视化方式,包括散点图、柱状图、饼图,添加网格与注释,并利用SHAP库解释模型决策过程。
请注意:波士顿住房数据集在新版的 scikit-learn 中已被标注为“可能带有偏见”,仅在此作为教学演示用;实际项目需谨慎处理。
# This code performs the following functions:
# 1. Loads the 加利福利亚 Housing dataset.
# 2. Constructs a simple MLP to predict house prices.
# 3. Trains the network using gradient descent (via scikit-learn MLP).
# 4. Visualizes data and results with Seaborn and Matplotlib in various styles.
# 5. Utilizes SHAP to explain model decisions.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neural_network import MLPRegressor
from sklearn.metrics import mean_squared_error# -------------- 1. Load the California Housing dataset --------------
california = fetch_california_housing()
X = california.data
y = california.target
feature_names = california.feature_names# Convert to DataFrame for easier processing
df = pd.DataFrame(X, columns=feature_names)
df['PRICE'] = y# -------------- 2. Split the data into training and testing sets --------------
X_train, X_test, y_train, y_test = train_test_split(df.drop('PRICE', axis=1), df['PRICE'], test_size=0.2, random_state=42)scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)# -------------- 3. Construct a simple MLP Regressor and train it --------------
mlp = MLPRegressor(hidden_layer_sizes=(16, 8),activation='relu',solver='adam',learning_rate_init=0.01,max_iter=500,random_state=42)mlp.fit(X_train_scaled, y_train)# Evaluate the model
y_pred = mlp.predict(X_test_scaled)
mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error on Test Set:", mse)# -------------- 4. Data Visualization --------------
sns.set_theme(style="whitegrid")# 4.1 Scatter plot of predictions
plt.figure(figsize=(8,6))
plt.scatter(y_test, y_pred, marker='o', color='blue', label='Predictions')
plt.plot([y_test.min(), y_test.max()],[y_test.min(), y_test.max()],color='red', linestyle='--', label='Ideal Line')
plt.xlabel("True House Price")
plt.ylabel("Predicted House Price")
plt.title("Scatter Plot of True vs Predicted")
plt.legend(loc='best')
plt.grid(True)
plt.annotate('Close to Ideal', xy=(25, 25), xytext=(30, 40),arrowprops=dict(facecolor='black', arrowstyle='->'))
plt.show()# 4.2 Bar chart of feature importances (using MLP.coefs_)
# For MLP, there's no direct "feature_importance_", we approximate by sum of absolute weights for the first layer
feature_importance = np.sum(np.abs(mlp.coefs_[0]), axis=1)
plt.figure(figsize=(10,6))
plt.bar(feature_names, feature_importance, color='skyblue', edgecolor='black')
plt.xlabel('Features')
plt.ylabel('Approx Importance')
plt.title('Feature Importances (Sum of Absolute Weights in First Hidden Layer)')
plt.axhspan(0, np.mean(feature_importance), color='yellow', alpha=0.3,label='Below average importance')
plt.legend()
plt.xticks(rotation=45)
plt.grid(True)
plt.show()# 4.3 Pie chart of feature importances
plt.figure(figsize=(6,6))
plt.pie(feature_importance, labels=feature_names, autopct='%1.1f%%', startangle=140)
plt.title('Feature Importance Distribution')
plt.show()# 4.4 Additional scatter plots with different line/markers
plt.figure(figsize=(8,6))
markers = ['o', 's', '^', '*', 'D', 'X', 'P', 'v', '+', '.']
for i, col in enumerate(feature_names[:5]):plt.scatter(X_train[col], y_train, marker=markers[i % len(markers)], label=col)
plt.xlabel('Feature Value')
plt.ylabel('House Price')
plt.title('Scatter Plots of First 5 Features vs. Price')
plt.legend(loc='upper right')
plt.grid(True)
plt.show()# -------------- 5. SHAP analysis --------------
# Install shap if needed: !pip install shap
import shapexplainer = shap.Explainer(mlp, X_train_scaled)
shap_values = explainer(X_test_scaled)# SHAP Summary plot
shap.summary_plot(shap_values, features=X_test_scaled, feature_names=feature_names)# SHAP dependence plot for top 2 features
shap.plots.scatter(shap_values[:, 0], color=shap_values)
shap.plots.scatter(shap_values[:, 1], color=shap_values)# Print intermediate data shapes for debugging
print("X_train_scaled shape:", X_train_scaled.shape)
print("y_train shape:", y_train.shape)
print("MLP hidden layers:", mlp.hidden_layer_sizes)
代码可视化要点
- 不同的线型和标记:在散点图中采用多种标记(如
o
,s
,^
等)区分特征。 - 添加网格:
plt.grid(True)
帮助读者更容易跟踪数据点位置。 - 优化标题和标签:标题与坐标轴标签均指明含义。
- 使用不同的颜色:散点图、柱状图、饼图都选用对比度较高的配色方案。
- 添加图例:并通过
loc='best'
选择合适位置。 - 高亮关键区域:在柱状图中采用
plt.axhspan()
凸显平均线以下区域。 - 添加注释:使用
plt.annotate()
指出与理想线较为接近的区域等。
代码输出说明
输出内容 | 描述 |
---|---|
测试集均方误差(MSE) | 评估网络预测效果,数值越小表示模型对房价预测更准确。 |
散点图(真实值 vs. 预测值) | 展示模型表现,理想情况下数据点应靠近对角线。 |
特征重要性(柱状图+饼图) | 虽然MLP没有明确的特征重要性,但可以用绝对权重求和近似衡量每个特征的影响力。 |
多特征散点图 | 可视化不同特征与价格之间的关系,强调线型、标记与网格以提高可读性。 |
SHAP可视化 | 使用SHAP解释模型决策过程,展示各特征对预测结果的正负影响程度。 |
中间调试信息 | 包含数据集维度、MLP的网络结构等,方便排查潜在问题。 |
代码功能实现:
- 数据加载与清洗:载入加利福利亚住房数据并进行标准化处理。
- 网络构建与训练:采用多层感知机并通过误差反向传播来学习参数。
- 评估与可视化:使用散点图、柱状图、饼图、SHAP可视化等多方式展现模型表现与特征影响。
- 多标注方式的图形输出:使用网格、注释、不同线型与颜色等提升可读性。
第五节:参考信息源
-
AI历史与寒冬
- Minsky, M., & Papert, S. (1969). Perceptrons. MIT Press.
- Russell, S. J., & Norvig, P. (2009). Artificial Intelligence: A Modern Approach. Prentice Hall.
-
BP算法与神经网络
- Rumelhart, D. E., Hinton, G. E., & Williams, R. J. (1986). Learning Representations by Back-Propagating Errors. Nature.
- Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
-
SHAP解释模型
- Lundberg, S. M., & Lee, S. I. (2017). A Unified Approach to Interpreting Model Predictions. Advances in Neural Information Processing Systems.
-
Scikit-learn与数据集
- Pedregosa, F., et al. (2011). Scikit-learn: Machine Learning in Python. Journal of Machine Learning Research, 12, 2825-2830.
参考文献链接:
- Minsky, M., & Papert, S. (1969). Perceptrons. MIT Press.
- Russell, S., & Norvig, P. (2009). Artificial Intelligence: A Modern Approach.
- Rumelhart, D. E., et al. (1986). Learning representations by back-propagating errors.
- Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
- Lundberg, S. M., & Lee, S. I. (2017). A Unified Approach to Interpreting Model Predictions.
- Pedregosa, F., et al. (2011). Scikit-learn: Machine Learning in Python.
结语
两次AI寒冬体现了技术发展的曲折性:
- 第一次因感知机的局限性使得线性模型萎靡不振;
- 第二次因专家系统瓶颈**、硬件落后与投资潮水褪去,AI再度进入沉寂。
然而,这些“寒冬”也为后续的深度学习、硬件革新与数据驱动模式提供了养分。如今,AI在大规模算力与数据的支撑下,开启了第三波浪潮**,也正因此,我们更应当记住历史教训,让技术发展更加稳健与长远。
相关文章:

【通俗理解】AI的两次寒冬:从感知机困局到深度学习前夜
AI的两次寒冬:从感知机困局到深度学习前夜 引用(中英双语) 中文: “第一次AI寒冬,是因为感知机局限性被揭示,让人们失去了对算法可行性的信心。” “第二次AI寒冬,则是因为专家系统的局限性和硬…...

transformer深度学习实战CCTSDB中国交通标志识别
本文采用RT-DETR作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。RT-DETR以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对CCTSDB交通标志数据集进行训练和优化,该数据集包含丰富的CCTSDB交…...

JavaWeb开发(六)XML介绍
1. XML介绍 1.1. 什么是XML (1)XML 指可扩展标记语言(EXtensible Markup Language)XML 是一种很像HTML的标记语言。 (2)XML 的设计宗旨是传输数据(目前主要是作为配置文件),而不是显示数据。 (3&a…...
使用pbootcms开发一个企业官网
V:llike620 pbootcms开源PHP建站系统 https://www.pbootcms.com/ 配置网站 域名解析后,网站绑定到程序根目录即可 例如:本地域名是dobot.test ,那么也要同步本地的hosts是 127.0.0.1 dobot.test 需要配置下伪静态规则 location / {if (!-e $r…...

Linux C编程——文件IO基础
文件IO基础 一、简单的文件 IO 示例二、文件描述符三、open 打开文件1. 函数原型2. 文件权限3. 宏定义文件权限4. 函数使用实例 四、write 写文件五、read 读文件六、close 关闭文件七、Iseek 绍 Linux 应用编程中最基础的知识,即文件 I/O(Input、Outout…...
【信息系统项目管理师】高分论文:论信息系统项目的风险管理(人民医院的信息系统)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文1、规划风险管理2、项目风险识别3、风险定性分析4、风险定量分析5、制定风险应对6、实施风险应对计划7、监督风险论文 2022年6月,我作为项目经理承担了XX县人民医院的信息系统建设,该项目总投资300万,其…...

UE播放声音
蓝图中有两个播放声音的函数 Play Sound 2D 和 Play Sound at Location Play Sound 2D没有声音距离衰减,一般用于界面ui Play Sound at Location 有声音距离衰减,一般用于枪声,场景声等,比较常用...
Docker Compose 启动 Harbor 并指定网络
1. 介绍 Harbor 是一个开源的企业级 Docker 镜像仓库,提供镜像存储、访问控制、安全扫描等功能。使用 Docker Compose 启动 Harbor 时,您可以指定一个自定义网络,以便管理容器之间的网络通信。在本示例中,我们将创建一个名为 har…...
WebSocket 实战案例:从设计到部署
在前六篇文章中,我们深入探讨了 WebSocket 的基础原理、服务端开发、客户端实现、安全实践、性能优化和测试调试。今天,让我们通过一个实战案例,看看如何将这些知识应用到实际项目中。我曾在一个大型在线教育平台中,通过 WebSocket 实现了实时互动课堂,支持了数万名师生的同时在…...
selenium合集
环境搭建步骤 安装selenium pip install selenium 安装浏览器 安装浏览器驱动 谷歌浏览器:chromdriver.exe ie浏览器:ieserverdriver.exe FireFox浏览器:geckodriver.exe 特别注意⚠️:下载驱动版本必须与浏览器版本一致 下载地址 淘宝镜像࿱…...
JVM生产环境常用参数配置及调优建议
一、生产常用参数配置 JAVA_OPTS"-server -Xms3000m -Xmx3000m -Xmn1500m -XX:UseG1GC -XX:ConcGCThreads8 -XX:PrintGCDetails -XX:PrintGCTimeStamps -Xloggc:./g1-gc.log -XX:MaxMetaspaceSize256m -XX:-UseGCOverheadLimit -XX:UseCompressedOops -XX:HeapDumpOnOu…...
Spring Boot 3 实现 MySQL 主从数据库之间的数据同步
✅ Spring Boot 3 实现 MySQL 主从数据库之间的数据同步 在实际项目中,为了提高 系统的读性能 和 数据的可用性,通常会使用 主从数据库架构。Spring Boot 提供了对 多数据源 的良好支持,可以轻松配置 主从数据库 的数据同步,实现…...

【小程序开发】- 小程序版本迭代指南(版本发布教程)
一,版本号 版本号是小程序版本的标识,通常由一系列数字组成,如 1.0.0、1.1.0 等。版本号的格式通常是 主版本号.次版本号.修订号 主版本号:当小程序有重大更新或不兼容的更改时,主版本号会增加。 次版本号:…...
MySQL 间隙锁避免“可重复读”出现“幻读”
在数据库事务处理中,可重复读(Repeatable Read)是一个常用的隔离级别,但其默认行为可能导致幻读现象。然而,在 MySQL 的实现中,通过 **间隙锁(Gap Lock)**机制,能够避免幻…...

揭秘区块链隐私黑科技:零知识证明如何改变未来
文章目录 1. 引言:什么是零知识证明?2. 零知识证明的核心概念与三大属性2.1 完备性(Completeness)2.2 可靠性(Soundness)2.3 零知识性(Zero-Knowledge) 3. 零知识证明的工作原理4. 零…...
JavaWeb开发:从入门到精通
近年来,JavaWeb开发已经成为了互联网开发领域的重要技术之一。无论是大型企业还是个人项目,都离不开JavaWeb开发。本文将为您介绍JavaWeb开发的基本概念、常用技术和开发流程,帮助您快速入门并掌握这一技术。 一、JavaWeb开发的基本概念 Jav…...

2025年01月07日Github流行趋势
项目名称:khoj 项目地址url:https://github.com/khoj-ai/khoj项目语言:Python历史star数:20105今日star数:363项目维护者:debanjum, sabaimran, MythicalCow, aam-at, shantanuSakpal项目简介:你…...

c#集成npoi根据excel模板导出excel
NuGet中安装npoi 创建excel模板,替换其中的内容生成新的excel文件。 例子中主要写了这四种情况: 1、替换单个单元格内容; 2、替换横向多个单元格; 3、替换表格; 4、单元格中插入图片; using System.IO; …...

Vue2移动端(H5项目)项目封装switch组件支持动态设置开启关闭背景色、值及组件内显示文字描述、禁用、switch 的宽度
前言 近期产品需求:Vue2移动端项目需要在switch开关内显示文字,看Vantui没有对应功能,因此自己手撸写了这个组件。 一、最终效果 二、参数配置 1、代码示例: <t-switch v-model"check"/>2、配置参数(…...
MATLAB语言的语法糖
MATLAB语言的语法糖 引言 在编程语言的发展历程中,语法糖(Syntactic Sugar)被广泛提及。它指的是一种编程语言的语法特性,旨在使代码更易读、更易写,虽然这些特性并不增加语言的表达能力,但能使程序员的生…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...