《深度学习实战》第3集:循环神经网络(RNN)与序列建模
第3集:循环神经网络(RNN)与序列建模
引言
在深度学习领域,处理序列数据(如文本、语音、时间序列等)是一个重要的研究方向。传统的全连接网络和卷积神经网络(CNN)难以直接捕捉序列中的时序依赖关系,而循环神经网络(Recurrent Neural Network, RNN)应运而生。它通过引入“记忆”机制,能够有效建模序列数据的动态特性。然而,随着任务复杂度的提升,RNN 的局限性也逐渐显现,这促使了 LSTM 和 GRU 等改进模型的诞生。本集将深入探讨 RNN 的基本原理及其改进版本,并结合实战项目展示其应用价值。最后,我们还将讨论 Transformer 如何逐步取代 RNN 成为序列建模的新宠。
1. RNN 的基本原理与局限性
1.1 什么是 RNN?
RNN(Recurrent Neural Network)是一类适合处理序列数据的神经网络。与传统的前馈神经网络不同,RNN具有循环结构,可以将前一个时刻的信息传递到当前时刻,从而记忆序列中的历史信息。
RNN的工作原理:
- 在每个时间步,RNN通过接收当前输入和上一时刻的隐藏状态,更新当前的隐藏状态,并计算当前的输出。
- 这种结构允许RNN处理具有时序依赖关系的数据,如语音、文本和时间序列。
基本原理
RNN 的核心思想是通过一个循环结构,将当前时刻的输入与上一时刻的隐藏状态结合起来,从而实现对序列信息的记忆。具体来说,RNN 的计算公式如下:
h t = σ ( W h h t − 1 + W x x t + b ) h_t = \sigma(W_h h_{t-1} + W_x x_t + b) ht=σ(Whht−1+Wxxt+b)
其中:
- h t 是当前时刻的隐藏状态; h_t 是当前时刻的隐藏状态; ht是当前时刻的隐藏状态;
- x t 是当前时刻的输入; x_t 是当前时刻的输入; xt是当前时刻的输入;
- W h 和 W x 是权重矩阵; W_h 和 W_x 是权重矩阵; Wh和Wx是权重矩阵;
- b 是偏置项; b 是偏置项; b是偏置项;
- σ 是激活函数(通常为 t a n h 或 R e L U )。 \sigma 是激活函数(通常为 tanh 或 ReLU)。 σ是激活函数(通常为tanh或ReLU)。
通过这种递归计算,RNN 能够捕捉序列中的时序依赖关系。
局限性
尽管 RNN 在理论上可以处理任意长度的序列,但在实际训练中存在以下问题:
- 梯度消失/爆炸问题:由于反向传播过程中梯度需要通过时间维度传递,长序列会导致梯度指数级缩小或放大。当序列较长时,RNN的梯度容易在反向传播过程中消失或爆炸,使得模型难以学习长期依赖关系
- 长期依赖问题:RNN 难以记住距离较远的信息,因为隐藏状态会随着时间被覆盖或遗忘。RNN在捕捉较长时间依赖时效果较差,尤其是在长序列中,它无法保持足够的信息。
这些问题限制了 RNN 在复杂任务中的表现。
1.2 LSTM 和 GRU 的改进
为了克服 RNN 的局限性,研究者提出了两种改进模型:LSTM(Long Short-Term Memory)长短期记忆网络和 GRU(Gated Recurrent Unit)门控循环单元。它们通过引入门控机制,增强了模型对长期依赖的建模能力。
- LSTM(长短期记忆网络)

LSTM通过引入“记忆单元”和“门控机制”来控制信息流动,克服了传统RNN在长时间序列建模中的不足。LSTM的核心组件包括:
- 遗忘门:决定当前时间步的记忆单元中哪些信息需要遗忘。
- 输入门:控制当前时间步的输入信息如何更新到记忆单元中。
- 输出门:控制记忆单元的信息如何影响输出。
通过这些门控机制,LSTM能够有效地保持长期依赖信息,避免梯度消失问题。
- GRU(门控循环单元)

GRU是LSTM的简化版本,它将LSTM中的遗忘门和输入门合并为一个更新门,减少了参数量,使得训练更加高效。GRU的结构较LSTM更为简单,但在很多任务上,GRU与LSTM的表现相差不大。
LSTM 公式解释
LSTM 引入了三个门(输入门、遗忘门、输出门)以及一个细胞状态(cell state),用于控制信息的流动。其核心公式如下:
-
遗忘门:决定哪些信息需要从细胞状态中丢弃。
f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f ) f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) ft=σ(Wf⋅[ht−1,xt]+bf) -
输入门:决定哪些新信息需要添加到细胞状态中。
i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) it=σ(Wi⋅[ht−1,xt]+bi)
C ~ t = tanh ( W C ⋅ [ h t − 1 , x t ] + b C ) \tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C) C~t=tanh(WC⋅[ht−1,xt]+bC) -
更新细胞状态:
C t = f t ⊙ C t − 1 + i t ⊙ C ~ t C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t Ct=ft⊙Ct−1+it⊙C~t -
输出门:决定当前时刻的隐藏状态。
o t = σ ( W o ⋅ [ h t − 1 , x t ] + b o ) o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o) ot=σ(Wo⋅[ht−1,xt]+bo)
h t = o t ⊙ tanh ( C t ) h_t = o_t \odot \tanh(C_t) ht=ot⊙tanh(Ct)
GRU公式解释
GRU 是 LSTM 的简化版本,将遗忘门和输入门合并为更新门,并移除了单独的细胞状态。其核心公式如下:
-
更新门:
z t = σ ( W z ⋅ [ h t − 1 , x t ] + b z ) z_t = \sigma(W_z \cdot [h_{t-1}, x_t] + b_z) zt=σ(Wz⋅[ht−1,xt]+bz) -
重置门:
r t = σ ( W r ⋅ [ h t − 1 , x t ] + b r ) r_t = \sigma(W_r \cdot [h_{t-1}, x_t] + b_r) rt=σ(Wr⋅[ht−1,xt]+br) -
候选隐藏状态:
h ~ t = tanh ( W ⋅ [ r t ⊙ h t − 1 , x t ] + b ) \tilde{h}_t = \tanh(W \cdot [r_t \odot h_{t-1}, x_t] + b) h~t=tanh(W⋅[rt⊙ht−1,xt]+b) -
最终隐藏状态:
h t = ( 1 − z t ) ⊙ h t − 1 + z t ⊙ h ~ t h_t = (1 - z_t) \odot h_{t-1} + z_t \odot \tilde{h}_t ht=(1−zt)⊙ht−1+zt⊙h~t
LSTM 和 GRU 的门控机制使得它们能够更好地捕捉长期依赖关系,同时缓解了梯度消失问题。
1.3 序列建模的应用场景
RNN 及其变体广泛应用于以下领域:
- 语言建模:语言建模是自然语言处理中的一个重要任务,目标是根据前文的单词预测下一个单词。RNN、LSTM和GRU在语言建模中表现优异,能够捕捉句子中各个单词之间的时序依赖关系,可预测下一个单词的概率分布,常用于机器翻译、文本生成等任务。
- 时间序列预测:时间序列预测是使用历史数据预测未来的一个典型应用场景。例如,在股票市场中,我们希望基于历史价格数据预测未来的股价趋势。RNN、LSTM和GRU被广泛应用于金融领域的时间序列预测任务,也常用于天气预测等领域。
- 语音识别:将音频信号转化为文本。
- 视频分析:捕捉视频帧之间的时序关系。
2. 实战项目:使用 LSTM 预测股票价格趋势
2.1 项目背景
我们将使用LSTM模型来预测股票价格趋势。数据来源于Yahoo Finance,我们将使用过去的股票数据来预测未来几天的股票价格变化。
2.2 数据准备
首先,安装所需的库:
pip install yfinance pandas numpy matplotlib tensorflow scikit-learn
接着,获取股票数据并进行预处理:
import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler# 获取股票数据
data = yf.download('AAPL', start='2010-01-01', end='2023-01-01', auto_adjust=True)# 使用收盘价
closing_prices = data['Close'].values.reshape(-1, 1)# 数据归一化
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(closing_prices)# 创建训练数据(使用过去60天的数据预测下一天的价格)
def create_dataset(data, time_step=60):X, y = [], []for i in range(len(data)-time_step-1):X.append(data[i:(i+time_step), 0])y.append(data[i + time_step, 0])return np.array(X), np.array(y)X, y = create_dataset(scaled_data)# 重塑输入数据的形状为 [样本数, 时间步长, 特征数]
X = X.reshape(X.shape[0], X.shape[1], 1)# 划分训练集和测试集
train_size = int(len(X) * 0.8)
X_train, X_test = X[:train_size], X[train_size:]
y_train, y_test = y[:train_size], y[train_size:]
2.3 构建LSTM模型
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout# 构建LSTM模型
model = Sequential()
model.add(LSTM(units=50, return_sequences=True, input_shape=(X_train.shape[1], 1)))
model.add(Dropout(0.2))
model.add(LSTM(units=50, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(units=1))# 编译模型
model.compile(optimizer='adam', loss='mean_squared_error')# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=32)
2.4 预测与可视化
# 使用模型进行预测
predictions = model.predict(X_test)# 反归一化预测结果
predictions = scaler.inverse_transform(predictions)
y_test = scaler.inverse_transform(y_test.reshape(-1, 1))# 可视化结果
plt.figure(figsize=(12, 6))
plt.plot(y_test, color='blue', label='Actual Stock Price')
plt.plot(predictions, color='red', label='Predicted Stock Price')
plt.title('Stock Price Prediction using LSTM')
plt.xlabel('Time')
plt.ylabel('Stock Price')
plt.legend()
plt.show()
** 代码汇总:**
import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler# 获取股票数据
data = yf.download('AAPL', start='2010-01-01', end='2023-01-01', auto_adjust=True)if data.empty:print("No data found, check the stock symbol or try again later.")
else:# 使用收盘价closing_prices = data['Close'].values.reshape(-1, 1)# 数据归一化scaler = MinMaxScaler(feature_range=(0, 1))scaled_data = scaler.fit_transform(closing_prices)# 创建训练数据(使用过去60天的数据预测下一天的价格)def create_dataset(data, time_step=60):X, y = [], []for i in range(len(data)-time_step-1):X.append(data[i:(i+time_step), 0])y.append(data[i + time_step, 0])return np.array(X), np.array(y)X, y = create_dataset(scaled_data)# 重塑输入数据的形状为 [样本数, 时间步长, 特征数]X = X.reshape(X.shape[0], X.shape[1], 1)# 划分训练集和测试集train_size = int(len(X) * 0.8)X_train, X_test = X[:train_size], X[train_size:]y_train, y_test = y[:train_size], y[train_size:]from tensorflow.keras.models import Sequentialfrom tensorflow.keras.layers import LSTM, Dense, Dropout# 构建LSTM模型model = Sequential()model.add(LSTM(units=50, return_sequences=True, input_shape=(X_train.shape[1], 1)))model.add(Dropout(0.2))model.add(LSTM(units=50, return_sequences=False))model.add(Dropout(0.2))model.add(Dense(units=1))# 编译模型model.compile(optimizer='adam', loss='mean_squared_error')# 训练模型model.fit(X_train, y_train, epochs=10, batch_size=32)# 使用模型进行预测predictions = model.predict(X_test)# 反归一化预测结果predictions = scaler.inverse_transform(predictions)y_test = scaler.inverse_transform(y_test.reshape(-1, 1))# 可视化结果plt.figure(figsize=(12, 6))plt.plot(y_test, color='blue', label='Actual Stock Price')plt.plot(predictions, color='red', label='Predicted Stock Price')plt.title('Stock Price Prediction using LSTM')plt.xlabel('Time')plt.ylabel('Stock Price')plt.legend()plt.show()
代码输出结果:
[*********************100%***********************] 1 of 1 completed
2025-02-25 22:43:23.883004: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
2025-02-25 22:43:26.821365: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
2025-02-25 22:43:29.733373: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
D:\python_projects\lstm_demo\Lib\site-packages\keras\src\layers\rnn\rnn.py:200: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.super().__init__(**kwargs)
Epoch 1/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 4s 19ms/step - loss: 0.0037
Epoch 2/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 2s 19ms/step - loss: 3.0320e-04
Epoch 3/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 2s 19ms/step - loss: 2.5178e-04
Epoch 4/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 2s 19ms/step - loss: 2.8054e-04
Epoch 5/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 2s 19ms/step - loss: 2.1884e-04
Epoch 6/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 2s 19ms/step - loss: 1.9784e-04
Epoch 7/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 2s 19ms/step - loss: 1.7942e-04
Epoch 8/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 2s 19ms/step - loss: 1.9470e-04
Epoch 9/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 2s 19ms/step - loss: 1.5350e-04
Epoch 10/10
81/81 ━━━━━━━━━━━━━━━━━━━━ 2s 19ms/step - loss: 2.8230e-04
21/21 ━━━━━━━━━━━━━━━━━━━━ 1s 16ms/step
输出预测对比图片:

2.5 图解RNN和LSTM
-
RNN 展开图


-
LSTM 单元结构
( LSTM 单元结构图,标注输入门、遗忘门、输出门和细胞状态。)

3. 前沿关联:Transformer 在序列建模中的崛起
尽管LSTM和GRU在序列建模中取得了显著成果,但随着Transformer模型的出现,序列建模的格局发生了变化。Transformer模型通过自注意力机制能够并行处理序列数据,且在处理长距离依赖时更加高效。如今,Transformer模型已广泛应用于自然语言处理任务,如BERT和GPT系列模型。Transformer 模型凭借其自注意力机制(Self-Attention)彻底改变了序列建模领域。相比于 RNN,Transformer 具有以下优势:
- 并行化训练:无需按时间顺序处理序列,大幅提高了训练效率。
- 长程依赖建模:自注意力机制能够直接捕捉全局依赖关系。
- 广泛应用:Transformer 已成为 GPT、BERT 等大模型的核心架构。
尽管如此,RNN 仍然在某些特定任务(如实时序列处理)中具有不可替代的价值。理解 RNN 的原理及其改进版本,有助于我们更好地掌握现代深度学习技术的发展脉络。
总结
本集聚焦于循环神经网络(RNN)的基本原理及其改进模型 LSTM 和 GRU,并通过实战项目展示了它们在时间序列预测中的应用。同时,我们也探讨了 Transformer 的崛起如何推动序列建模进入新时代。下一集,我们将深入探讨 Transformer 的工作原理及其在自然语言处理中的革命性应用。敬请期待!
相关文章:
《深度学习实战》第3集:循环神经网络(RNN)与序列建模
第3集:循环神经网络(RNN)与序列建模 引言 在深度学习领域,处理序列数据(如文本、语音、时间序列等)是一个重要的研究方向。传统的全连接网络和卷积神经网络(CNN)难以直接捕捉序列中…...
mac下载MAMP6.8.1
因为mac的小皮面板没有php7.4了 链接:c9cc270e6961c17c.dmg官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘 鹅选一 附上大佬写的教程:MAMP PRO教程 - 牛奔 - 博客园...
动态表头导出EasyExcel
在 Spring Boot 中结合 EasyExcel 实现动态表头导出(无实体类,表头和字段(前端传表名,字段值动态查询,返回List<Map<String,Object>>)由前端传递)可以通过以下步骤实现。以下是完整…...
Python常见面试题的详解16
1. 如何强行关闭客户端和服务器之间的连接? 在网络编程中,有时需要强行中断客户端和服务器之间的连接。对于基于 TCP 协议的连接,由于其面向连接的特性,需要采取特定的步骤来确保连接被正确关闭;而 UDP 是无连接协议&a…...
BUU41 [GYCTF2020]FlaskApp1【SSTI】
题目: 加密处没啥事,但是解密的地方提交{{7*7}}就会返回报错界面,顺便把代码也爆出来了 text_decode base64.b64decode(text.encode()) 先将字符串 text编码为字节对象,然后使用 base64.b64decode 函数对这个字节对象进行 Base…...
今日运维之-Mac笔记本python环境问题
1. 问题:MAC升级系统后git报错? Error: Cant create update lock in /usr/local/var/homebrew/locks! Fix permissions by running:sudo chown -R $(whoami) /usr/local/var/homebrew Traceback (most recent call last):11: from /usr/local/Homebrew/…...
Vue进阶之AI智能助手项目(五)——ChatGPT的调用和开发
AI智能助手项目 前端页面Layout布局页面-viewssrc/views/chat/layout/Permission.vuesrc/views/chat/layout/sider/index.vuesrc/views/chat/layout/sider/List.vuesrc/views/chat/layout/sider/Footer.vueComponents 组件Header/index.vueMessage/index.vue前端页面 Layout布…...
PYTHONPATH
PYTHONPATH是一个环境变量,用于告诉Python解释器在哪里查找模块和包。它是一个目录的搜索路径,用于导入Python代码。 PYTHONPATH的作用 导入自定义模块:如果您有自己的Python模块,可以将它们添加到PYTHONPATH中&#…...
运维Ansible面试题及参考答案
目录 简述 Ansible 的工作原理,它是如何实现对远程主机管理的? Ansible 是基于什么语言开发的?这门语言的特性对 Ansible 的功能实现有哪些帮助? 解释 Agentless 在 Ansible 中的含义,与基于 Agent 的自动化工具相比,优势体现在哪? Ansible 中的 Inventory 文件是什…...
01.Zabbix 概述
Zabbix 概述 Zabbix 概述1. Zabbix 功能2. Zabbix 架构3. Zabbix Server 启动进程4. Zabbix 术语 Zabbix 概述 运维行业有句话: “无监控、不运维”,监控俗称“第三只眼”。没了监控,基础运维,业务运维都是“瞎子”。 所以说监控是运维这个职…...
MongoDB 数据库简介
MongoDB 数据库简介 引言 随着互联网技术的飞速发展,数据已经成为企业的重要资产。为了高效地管理和处理这些数据,数据库技术应运而生。MongoDB作为一种流行的NoSQL数据库,因其灵活的数据模型和高效的数据处理能力,受到了广泛的关注。本文将为您详细介绍MongoDB的基本概念…...
易基因:RNA甲基化修饰和R-loop的交叉调控:从分子机制到临床意义|深度综述
大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 R-loop(RNA-DNA杂合结构)是转录调控、DNA复制和修复等关键细胞过程的重要组成部分。但R-loop异常积累可能会破坏基因组完整性,从而导致多种疾病的发生…...
八、Spring Boot:RESTful API 应用
创建第一个 Spring Boot RESTful API 应用 在现代 Web 开发中,RESTful API 是一种非常流行的设计风格,它基于 HTTP 协议,提供了简单、灵活的方式来构建网络应用。Spring Boot 作为一款强大的微服务框架,提供了丰富的工具和支持&a…...
NLP的预处理数据
处理文本数据的主要工具是Tokenizer。Tokenizer根据一组规则将文本拆分为tokens。然后将这些tokens转换为数字,然后转换为张量,成为模型的输入。模型所需的任何附加输入都由Tokenizer添加。 如果您计划使用预训练模型,重要的是使用与之关联的…...
取消票证会把指定的票证从数据库中删除,同时也会把票证和航班 等相关表中的关联关系一起删除。但在删除之前,它会先检查当前用户是否拥有这张票
在做航班智能客服问答系统时会遇到取消票证的场景,这里涉及数据库的操作时会把指定的票证从数据库中删除,同时也会把票证和航班等相关表中的关联关系一起删除。但在删除之前,需要先检查当前用户是否拥有这张票,只有票主才有权限取…...
Linux相关知识(文件系统、目录树、权限管理)和Shell相关知识(字符串、数组)
仅供自学,请去支持javaGuide原版书籍。 1.Linux 1.1.概述 Linux是一种类Unix系统。 严格来讲,Linux 这个词本身只表示 Linux内核,单独的 Linux 内核并不能成为一个可以正常工作的操作系统。所以,就有了各种 Linux 发行版&#…...
7种内外网数据交换方案全解析 哪种安全、高效、合规?
内外网数据交换方案主要解决了企业跨网络数据传输中的安全、效率与合规性问题。通过采用先进的加密技术、高效的数据传输协议以及严格的审批和审计机制,该方案确保了数据在内外网之间的安全交换,同时提高了传输效率,并满足了企业对数据合规性…...
深入解析React useEffect与useLayoutEffect:区别、原理与实践
🌌 深入解析React useEffect与useLayoutEffect:区别、原理与实践 在React函数组件中,useEffect和useLayoutEffect是处理副作用的两个核心Hook。它们看似相似,但在执行时机和应用场景上有本质区别。本文将通过原理剖析、对…...
VMware中的linux常用指令
常用 Linux 基础命令 文件与目录操作 ls:查看当前目录的文件和子目录,ls -a显示所有文件,包括隐藏文件。cd:切换目录,如 **cd ~** 切换到个人家目录。pwd:查看当前目录。mkdir:创建文件夹&#…...
基于 Python 的项目管理系统开发
基于 Python 的项目管理系统开发 一、引言 在当今快节奏的工作环境中,有效的项目管理对于项目的成功至关重要。借助信息技术手段开发项目管理系统,能够显著提升项目管理的效率和质量。Python 作为一种功能强大、易于学习且具有丰富库支持的编程语言&…...
【论文学习】DeepSeek-R1 总结
文章目录 Abstract1. Introduction2. Approach2.1. Overview2.2. DeepSeek-R1-Zero: Reinforcement Learning on the Base Model2.3. DeepSeek-R1: Reinforcement Learning with Cold Start2.4. Distillation: Empower Small Models with Reasoning Capability 3. Experiment3.…...
在linux中利用conda安装blast
在 Linux 中使用 conda 安装 BLAST 非常简单。conda 是一个流行的包管理工具,可以轻松安装和管理生物信息学工具,包括 BLAST。以下是具体步骤: 1. 确保已安装 Conda 如果你还没有安装 conda,可以参考以下步骤安装 Miniconda&…...
Siddon算法参数说明及通俗解释
Siddon算法是一种用于快速精确计算三维CT数组中射线路径的算法。以下是该算法中每个参数的含义说明以及整个过程的通俗解释。 一、参数说明 参数含义X1,Y1,Z1射线的起点坐标。X2,Y2,Z2射线的终点坐标。X(a), Y(a), Z(a)射线的参数化表示,其中a是参数&…...
在 Windows 下的 Docker 中安装 R语言
以下是在 Windows 系统的 Docker 中安装 R 语言的详细教程,包括 Docker 的安装、配置以及如何在容器中运行 R 语言的步骤。 步骤 1:安装 Docker 下载 Docker Desktop 访问 Docker 官方网站:Docker Desktop: The #1 Containerization Tool for…...
电子科技大学考研复习经验分享
电子科技大学考研复习经验分享 本人情况:本科就读于电科软院,24年2月开始了解考研,24年3月开始数学,9月决定考本院(开始全天候图书馆学习)并开始专业课学习,11月底开始政治学习,最后…...
python 引用父目录:层级的模块
from pathlib import Path import sys 获取 project 目录 project_dir Path(file).resolve().parent.parent 将 project 目录添加到 sys.path 中 sys.path.append(str(project_dir)) 导入 support 模块 import support support.print_func(“Runoob”)...
git 查询包含某个文件夹的步骤
步骤 1:拉取最新的远程分支信息 确保本地缓存的远程分支信息是最新的: bash 复制 git fetch --all 步骤 2:遍历所有远程分支并检查目标文件夹 使用 git ls-tree 检查每个分支是否包含目标文件夹。以下脚本会列出所有包含 your_folder_pa…...
Linux中的查看命令
路径分为相对路径(行相对当前工作目录开始的路径)和绝对路径(不管是)#:命令提示符,从这个位置可以开始输入命令,另一个提示符为$,如果是root,则提示为#;如果是…...
DeepSeek技术提升,Linux本地部署全攻略
文章目录 1.Ollama部署1.1 安装Ollama1.2 配置Ollama1.3 下载deepseek模型 2.安装MaxKB可视化页面2.1 下载镜像2.2 运行容器2.3 配置MaxKB 3.配置Chatbox AI可视化页面 1.Ollama部署 Ollama下载地址 根据自己需求选择版本下载 1.1 安装Ollama 下载安装脚本并执行 curl -fs…...
在 Mac mini M2 上 MaxKb配置ollama,API域名无效的解决方案
环境说明 docker方案安装与使用的maxkb 本地ollama安装deekseek r1 解决方案 参考https://bbs.fit2cloud.com/t/topic/4165 mac m1用户,根据github的以下回复,成功绑定域名api 如果你想调用本地的ollama 中的大模型,域名试试:…...
