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

《深度学习实战》第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=σ(Whht1+Wxxt+b)

其中:

  • h t 是当前时刻的隐藏状态; h_t 是当前时刻的隐藏状态; ht是当前时刻的隐藏状态;
  • x t 是当前时刻的输入; x_t 是当前时刻的输入; xt是当前时刻的输入;
  • W h 和 W x 是权重矩阵; W_h 和 W_x 是权重矩阵; WhWx是权重矩阵;
  • b 是偏置项; b 是偏置项; b是偏置项;
  • σ 是激活函数(通常为 t a n h 或 R e L U )。 \sigma 是激活函数(通常为 tanh 或 ReLU)。 σ是激活函数(通常为tanhReLU)。

通过这种递归计算,RNN 能够捕捉序列中的时序依赖关系。

局限性
尽管 RNN 在理论上可以处理任意长度的序列,但在实际训练中存在以下问题:

  1. 梯度消失/爆炸问题:由于反向传播过程中梯度需要通过时间维度传递,长序列会导致梯度指数级缩小或放大。当序列较长时,RNN的梯度容易在反向传播过程中消失或爆炸,使得模型难以学习长期依赖关系
  2. 长期依赖问题: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),用于控制信息的流动。其核心公式如下:

  1. 遗忘门:决定哪些信息需要从细胞状态中丢弃。
    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[ht1,xt]+bf)

  2. 输入门:决定哪些新信息需要添加到细胞状态中。
    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[ht1,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[ht1,xt]+bC)

  3. 更新细胞状态
    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=ftCt1+itC~t

  4. 输出门:决定当前时刻的隐藏状态。
    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[ht1,xt]+bo)
    h t = o t ⊙ tanh ⁡ ( C t ) h_t = o_t \odot \tanh(C_t) ht=ottanh(Ct)

GRU公式解释
GRU 是 LSTM 的简化版本,将遗忘门和输入门合并为更新门,并移除了单独的细胞状态。其核心公式如下:

  1. 更新门
    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[ht1,xt]+bz)

  2. 重置门
    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[ht1,xt]+br)

  3. 候选隐藏状态
    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[rtht1,xt]+b)

  4. 最终隐藏状态
    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=(1zt)ht1+zth~t

LSTM 和 GRU 的门控机制使得它们能够更好地捕捉长期依赖关系,同时缓解了梯度消失问题。


1.3 序列建模的应用场景

RNN 及其变体广泛应用于以下领域:

  1. 语言建模:语言建模是自然语言处理中的一个重要任务,目标是根据前文的单词预测下一个单词。RNN、LSTM和GRU在语言建模中表现优异,能够捕捉句子中各个单词之间的时序依赖关系,可预测下一个单词的概率分布,常用于机器翻译、文本生成等任务。
  2. 时间序列预测:时间序列预测是使用历史数据预测未来的一个典型应用场景。例如,在股票市场中,我们希望基于历史价格数据预测未来的股价趋势。RNN、LSTM和GRU被广泛应用于金融领域的时间序列预测任务,也常用于天气预测等领域。
  3. 语音识别:将音频信号转化为文本。
  4. 视频分析:捕捉视频帧之间的时序关系。

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

  1. RNN 展开图

    在这里插入图片描述
    在这里插入图片描述

  2. LSTM 单元结构
    ( LSTM 单元结构图,标注输入门、遗忘门、输出门和细胞状态。)
    在这里插入图片描述


3. 前沿关联:Transformer 在序列建模中的崛起

尽管LSTM和GRU在序列建模中取得了显著成果,但随着Transformer模型的出现,序列建模的格局发生了变化。Transformer模型通过自注意力机制能够并行处理序列数据,且在处理长距离依赖时更加高效。如今,Transformer模型已广泛应用于自然语言处理任务,如BERT和GPT系列模型。Transformer 模型凭借其自注意力机制(Self-Attention)彻底改变了序列建模领域。相比于 RNN,Transformer 具有以下优势:

  1. 并行化训练:无需按时间顺序处理序列,大幅提高了训练效率。
  2. 长程依赖建模:自注意力机制能够直接捕捉全局依赖关系。
  3. 广泛应用: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 实现动态表头导出&#xff08;无实体类&#xff0c;表头和字段&#xff08;前端传表名&#xff0c;字段值动态查询&#xff0c;返回List<Map<String,Object>>&#xff09;由前端传递&#xff09;可以通过以下步骤实现。以下是完整…...

Python常见面试题的详解16

1. 如何强行关闭客户端和服务器之间的连接&#xff1f; 在网络编程中&#xff0c;有时需要强行中断客户端和服务器之间的连接。对于基于 TCP 协议的连接&#xff0c;由于其面向连接的特性&#xff0c;需要采取特定的步骤来确保连接被正确关闭&#xff1b;而 UDP 是无连接协议&a…...

BUU41 [GYCTF2020]FlaskApp1【SSTI】

题目&#xff1a; 加密处没啥事&#xff0c;但是解密的地方提交{{7*7}}就会返回报错界面&#xff0c;顺便把代码也爆出来了 text_decode base64.b64decode(text.encode()) 先将字符串 text编码为字节对象&#xff0c;然后使用 base64.b64decode 函数对这个字节对象进行 Base…...

今日运维之-Mac笔记本python环境问题

1. 问题&#xff1a;MAC升级系统后git报错&#xff1f; 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‌是一个环境变量&#xff0c;用于告诉Python解释器在哪里查找模块和包。它是一个目录的搜索路径&#xff0c;用于导入Python代码‌。 PYTHONPATH的作用 ‌导入自定义模块‌&#xff1a;如果您有自己的Python模块&#xff0c;可以将它们添加到PYTHONPATH中&#…...

运维Ansible面试题及参考答案

目录 简述 Ansible 的工作原理,它是如何实现对远程主机管理的? Ansible 是基于什么语言开发的?这门语言的特性对 Ansible 的功能实现有哪些帮助? 解释 Agentless 在 Ansible 中的含义,与基于 Agent 的自动化工具相比,优势体现在哪? Ansible 中的 Inventory 文件是什…...

01.Zabbix 概述

Zabbix 概述 Zabbix 概述1. Zabbix 功能2. Zabbix 架构3. Zabbix Server 启动进程4. Zabbix 术语 Zabbix 概述 运维行业有句话: “无监控、不运维”&#xff0c;监控俗称“第三只眼”。没了监控&#xff0c;基础运维&#xff0c;业务运维都是“瞎子”。 所以说监控是运维这个职…...

MongoDB 数据库简介

MongoDB 数据库简介 引言 随着互联网技术的飞速发展,数据已经成为企业的重要资产。为了高效地管理和处理这些数据,数据库技术应运而生。MongoDB作为一种流行的NoSQL数据库,因其灵活的数据模型和高效的数据处理能力,受到了广泛的关注。本文将为您详细介绍MongoDB的基本概念…...

易基因:RNA甲基化修饰和R-loop的交叉调控:从分子机制到临床意义|深度综述

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 R-loop&#xff08;RNA-DNA杂合结构&#xff09;是转录调控、DNA复制和修复等关键细胞过程的重要组成部分。但R-loop异常积累可能会破坏基因组完整性&#xff0c;从而导致多种疾病的发生…...

八、Spring Boot:RESTful API 应用

创建第一个 Spring Boot RESTful API 应用 在现代 Web 开发中&#xff0c;RESTful API 是一种非常流行的设计风格&#xff0c;它基于 HTTP 协议&#xff0c;提供了简单、灵活的方式来构建网络应用。Spring Boot 作为一款强大的微服务框架&#xff0c;提供了丰富的工具和支持&a…...

NLP的预处理数据

处理文本数据的主要工具是Tokenizer。Tokenizer根据一组规则将文本拆分为tokens。然后将这些tokens转换为数字&#xff0c;然后转换为张量&#xff0c;成为模型的输入。模型所需的任何附加输入都由Tokenizer添加。 如果您计划使用预训练模型&#xff0c;重要的是使用与之关联的…...

取消票证会把指定的票证从数据库中删除,同时也会把票证和航班 等相关表中的关联关系一起删除。但在删除之前,它会先检查当前用户是否拥有这张票

在做航班智能客服问答系统时会遇到取消票证的场景&#xff0c;这里涉及数据库的操作时会把指定的票证从数据库中删除&#xff0c;同时也会把票证和航班等相关表中的关联关系一起删除。但在删除之前&#xff0c;需要先检查当前用户是否拥有这张票&#xff0c;只有票主才有权限取…...

Linux相关知识(文件系统、目录树、权限管理)和Shell相关知识(字符串、数组)

仅供自学&#xff0c;请去支持javaGuide原版书籍。 1.Linux 1.1.概述 Linux是一种类Unix系统。 严格来讲&#xff0c;Linux 这个词本身只表示 Linux内核&#xff0c;单独的 Linux 内核并不能成为一个可以正常工作的操作系统。所以&#xff0c;就有了各种 Linux 发行版&#…...

7种内外网数据交换方案全解析 哪种安全、高效、合规?

内外网数据交换方案主要解决了企业跨网络数据传输中的安全、效率与合规性问题。通过采用先进的加密技术、高效的数据传输协议以及严格的审批和审计机制&#xff0c;该方案确保了数据在内外网之间的安全交换&#xff0c;同时提高了传输效率&#xff0c;并满足了企业对数据合规性…...

深入解析React useEffect与useLayoutEffect:区别、原理与实践

&#x1f30c; ‌深入解析React useEffect与useLayoutEffect&#xff1a;区别、原理与实践 在React函数组件中&#xff0c;useEffect和useLayoutEffect是处理副作用的两个核心Hook。它们看似相似&#xff0c;但在执行时机和应用场景上有本质区别。本文将通过‌原理剖析‌、‌对…...

VMware中的linux常用指令

常用 Linux 基础命令 文件与目录操作 ls&#xff1a;查看当前目录的文件和子目录&#xff0c;ls -a显示所有文件&#xff0c;包括隐藏文件。cd&#xff1a;切换目录&#xff0c;如 **cd ~** 切换到个人家目录。pwd&#xff1a;查看当前目录。mkdir&#xff1a;创建文件夹&#…...

基于 Python 的项目管理系统开发

基于 Python 的项目管理系统开发 一、引言 在当今快节奏的工作环境中&#xff0c;有效的项目管理对于项目的成功至关重要。借助信息技术手段开发项目管理系统&#xff0c;能够显著提升项目管理的效率和质量。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 是一个流行的包管理工具&#xff0c;可以轻松安装和管理生物信息学工具&#xff0c;包括 BLAST。以下是具体步骤&#xff1a; 1. 确保已安装 Conda 如果你还没有安装 conda&#xff0c;可以参考以下步骤安装 Miniconda&…...

Siddon算法参数说明及通俗解释

Siddon算法是一种用于快速精确计算三维CT数组中射线路径的算法。以下是该算法中每个参数的含义说明以及整个过程的通俗解释。 一、参数说明 参数含义X1​,Y1​,Z1​射线的起点坐标。X2​,Y2​,Z2​射线的终点坐标。X(a), Y(a), Z(a)射线的参数化表示&#xff0c;其中a是参数&…...

在 Windows 下的 Docker 中安装 R语言

以下是在 Windows 系统的 Docker 中安装 R 语言的详细教程&#xff0c;包括 Docker 的安装、配置以及如何在容器中运行 R 语言的步骤。 步骤 1&#xff1a;安装 Docker 下载 Docker Desktop 访问 Docker 官方网站&#xff1a;Docker Desktop: The #1 Containerization Tool for…...

电子科技大学考研复习经验分享

电子科技大学考研复习经验分享 本人情况&#xff1a;本科就读于电科软院&#xff0c;24年2月开始了解考研&#xff0c;24年3月开始数学&#xff0c;9月决定考本院&#xff08;开始全天候图书馆学习&#xff09;并开始专业课学习&#xff0c;11月底开始政治学习&#xff0c;最后…...

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&#xff1a;拉取最新的远程分支信息 确保本地缓存的远程分支信息是最新的&#xff1a; bash 复制 git fetch --all 步骤 2&#xff1a;遍历所有远程分支并检查目标文件夹 使用 git ls-tree 检查每个分支是否包含目标文件夹。以下脚本会列出所有包含 your_folder_pa…...

Linux中的查看命令

路径分为相对路径&#xff08;行相对当前工作目录开始的路径&#xff09;和绝对路径&#xff08;不管是&#xff09;#&#xff1a;命令提示符&#xff0c;从这个位置可以开始输入命令&#xff0c;另一个提示符为$&#xff0c;如果是root&#xff0c;则提示为#&#xff1b;如果是…...

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用户&#xff0c;根据github的以下回复&#xff0c;成功绑定域名api 如果你想调用本地的ollama 中的大模型&#xff0c;域名试试&#xff1a;…...