Day15下 - Seq2Seq架构

Seq2Seq深度学习模型详解

Seq2Seq(Sequence-to-Sequence)架构是一种用于处理序列数据的深度学习模型,它广泛应用于自然语言处理(NLP)任务中,如机器翻译、文本摘要、对话系统等。

Seq2Seq架构算是大模型的鼻祖,该结构的思想是Encoder to Decoder(编解码器原理),将一个输入序列映射到另一个输出序列,其中输入和输出序列的长度可以不同。

Seq2Seq 架构通常由两个主要组件组成:

  1. 编码器(Encoder):

    • 编码器负责接收输入序列,并将其转换为一个固定长度的上下文向量(context vector),也称为“思想向量”(thought vector)。这个向量应该能够捕捉到输入序列中的所有相关信息。
    • 编码器通常是基于循环神经网络(RNN)、长短期记忆网络(LSTM)或门控循环单元(GRU)构建的,因为这些类型的网络擅长处理序列数据,可以记住序列中的长期依赖关系。
  2. 解码器(Decoder):

    • 解码器的任务是从编码器生成的上下文向量中解码出目标序列。它以逐个元素的方式生成输出序列,每次生成一个元素,并使用该元素作为下一个时间步的输入。
    • 与编码器类似,解码器也可以基于 RNN、LSTM 或 GRU 实现。解码器在生成每个输出时,会考虑到之前的输出以及编码器提供的上下文信息。

Encoder to Decoder(编解码器原理)

  • 编码器 - 解码器
  • Encoder - Decoder
  • RNN - RNN
  • Seq2Seq
  • RNN2RNN:进来一句话,出来一句话
  • CNN2RNN:看图说话

Seq2Seq

  • 输入:一个句子
  • 输出:一个句子
  • Seq编码器:把
### 插入 SQL 查询结果到新表的方法 在 SQL Server 中,可以使用 `SELECT INTO` 语句将现有查询的结果集插入到一个新的数据库表中。该语句会自动创建一个与查询结果结构一致的新表,并将查询数据写入该表中。 以下是一个典型的使用示例: ```sql SELECT column1, column2, column3 INTO new_table FROM existing_table WHERE condition; ``` 该语句会从 `existing_table` 中筛选符合条件的数据,并将结果插入到新创建的 `new_table` 表中。新表的列结构会自动继承查询结果的列结构,并将所有数据一次性存储[^1]。 如果目标数据库中已经存在目标表,并且需要将数据插入到该表中,则应使用 `INSERT INTO` 语句: ```sql INSERT INTO existing_table (column1, column2, column3) SELECT column1, column2, column3 FROM source_query; ``` 此方法适用于目标表已经定义好结构,并希望将查询结果追加到该表中的场景。需要注意字段的数据类型和顺序必须匹配[^2]。 在跨数据库操作中,例如将数据库 A 中的查询结果插入到数据库 B 的表中,可使用以下语法: ```sql USE databaseB; INSERT INTO dbo.target_table (column1, column2) SELECT column1, column2 FROM databaseA.dbo.source_table; ``` 此方式适用于数据同步或不同数据库之间的数据迁移场景[^1]。 --- ### 示例:将时间差计算结果插入新表 假设有一个表 `lot1`,其中包含 `SOURCELOTID`、`TIMESTAMP` 和 `EVENTNAME` 字段。可以使用以下语句计算两个时间点之间的时间差,并将结果插入到新表中: ```sql SELECT [SOURCELOTID], [TIMESTAMP] AS [SHIP_TIMESTAMP], [CREATE_TIMESTAMP], DATEDIFF(MINUTE, [CREATE_TIMESTAMP], [SHIP_TIMESTAMP]) AS [PROCESSING_MINUTES], DATEDIFF(HOUR, [CREATE_TIMESTAMP], [SHIP_TIMESTAMP]) AS [PROCESSING_HOURS], DATEDIFF(DAY, [CREATE_TIMESTAMP], [SHIP_TIMESTAMP]) AS [PROCESSING_DAYS] INTO LotProcessingTime FROM ( SELECT [SOURCELOTID], [TIMESTAMP], LEAD([TIMESTAMP], 1) OVER (PARTITION BY [SOURCELOTID] ORDER BY [TIMESTAMP]) AS [CREATE_TIMESTAMP] FROM lot1 WHERE [EVENTNAME] IN ('Create', 'Ship') ) AS Sub WHERE [CREATE_TIMESTAMP] IS NOT NULL; ``` 上述查询使用 `LEAD()` 函数获取“发货”事件的时间戳,并与“创建”事件的时间戳进行对比,计算出时间差。最终结果被插入到新表 `LotProcessingTime` 中[^3]。 --- ### 注意事项 - 使用 `SELECT INTO` 时,目标表必须不存在,否则会报错。 - 使用 `INSERT INTO` 时,目标表必须已经存在,并且字段数量和类型必须与查询结果匹配。 - 跨数据库插入数据时,需使用 `USE` 指定当前操作的数据库,并在表名前加上数据库名和架构名(如 `databaseA.dbo.table1`)[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值