(九)現代循環神經網絡(RNN):從注意力增強到神經架構搜索的深度學習演進

現代循環神經網絡的內容,將介紹幾種先進的循環神經網絡架構,包括門控循環單元(GRU)、長短期記憶網絡(LSTM)的變體,以及注意力機制等。這些內容將幫助你更深入地理解循環神經網絡的發展和應用。

1 門控循環單元(GRU)

門控循環單元(Gated Recurrent Unit, GRU)是一種高效的循環神經網絡架構,旨在解決傳統RNN中的梯度消失和爆炸問題。GRU通過引入門控機制來控制信息的流動,使得模型能夠更好地捕捉長期依賴關系,同時減少了參數數量,提高了訓練效率。

1.1 GRU的核心機制

GRU的核心思想是將遺忘門和輸入門合并為一個更新門(Update Gate),并引入重置門(Reset Gate)來控制信息的更新。這種設計使得GRU在保持性能的同時,減少了計算復雜度。

  • 更新門(Update Gate):決定前一時刻的隱藏狀態有多少信息傳遞到當前時刻。
  • 重置門(Reset Gate):決定前一時刻的隱藏狀態有多少信息用于計算當前時刻的候選隱藏狀態。
1.2 GRU的數學表達

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 \cdot 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) \cdot h_{t-1} + z_t \cdot \tilde{h}_t ht?=(1?zt?)?ht?1?+zt??h~t?

其中:

  • (x_t) 是當前時刻的輸入。
  • (h_{t-1}) 是前一時刻的隱藏狀態。
  • (W_z, W_r, W) 是權重矩陣。
  • (b_z, b_r, b) 是偏置項。
  • (\sigma) 是 sigmoid 激活函數。
  • (\tanh) 是雙曲正切激活函數。
1.3 GRU的代碼實現
import torch
import torch.nn as nnclass GRU(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(GRU, self).__init__()self.hidden_size = hidden_sizeself.gru_cell = nn.GRUCell(input_size, hidden_size)self.fc = nn.Linear(hidden_size, output_size)def forward(self, x, h=None):batch_size = x.size(1)if h is None:h = torch.zeros(batch_size, self.hidden_size).to(x.device)outputs = []for t in range(x.size(0)):h = self.gru_cell(x[t], h)outputs.append(self.fc(h))return torch.stack(outputs), h# 測試GRU
if __name__ == "__main__":model = GRU(input_size=10, hidden_size=20, output_size=5)input_data = torch.randn(5, 3, 10)  # 序列長度5,批量大小3,輸入特征10outputs, h_n = model(input_data)print(outputs.shape)  # 輸出應為torch.Size([5, 3, 5])
1.4 GRU的優勢
  • 計算效率高:GRU的結構比LSTM簡單,訓練速度更快。
  • 參數數量少:GRU的參數數量比LSTM少,適合資源受限的環境。
1.5 GRU的應用場景

GRU在多種序列建模任務中表現出色,包括但不限于:

  • 自然語言處理:文本分類、序列生成。
  • 語音識別:語音信號處理。
  • 時間序列預測:預測未來的數據點。

通過GRU的門控機制,模型能夠有效地捕捉序列數據中的長期依賴關系,提高模型的性能和穩定性。

2 長短期記憶網絡(LSTM)的變體

長短期記憶網絡(LSTM)是一種強大的循環神經網絡架構,能夠有效處理序列數據中的長期依賴問題。在實際應用中,研究者們提出了多種LSTM的變體,以進一步提高模型的性能和效率。以下是幾種常見的LSTM變體及其特點。

2.1 深度LSTM(Deep LSTM)

深度LSTM通過堆疊多個LSTM層來構建更深層次的模型。每一層的輸出作為下一層的輸入,從而增強模型的表示能力。

代碼實現

import torch
import torch.nn as nnclass DeepLSTM(nn.Module):def __init__(self, input_size, hidden_size, output_size, num_layers):super(DeepLSTM, self).__init__()self.hidden_size = hidden_sizeself.num_layers = num_layersself.lstm = nn.LSTM(input_size, hidden_size, num_layers=num_layers, batch_first=True)self.fc = nn.Linear(hidden_size, output_size)def forward(self, x):h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size).to(x.device)c0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size).to(x.device)out, _ = self.lstm(x, (h0, c0))out = self.fc(out[:, -1, :])return out# 測試深度LSTM
if __name__ == "__main__":model = DeepLSTM(input_size=10, hidden_size=20, output_size=5, num_layers=2)input_data = torch.randn(3, 10, 10)  # 批量大小3,序列長度10,輸入特征10output = model(input_data)print(output.shape)  # 輸出應為torch.Size([3, 5])

特點

  • 增強表示能力:通過堆疊多個LSTM層,模型能夠學習更復雜的特征層次。
  • 適合復雜任務:適用于需要強大表示能力的任務,如機器翻譯、語音識別。
2.2 雙向LSTM(Bidirectional LSTM)

雙向LSTM包含兩個LSTM層,一個處理正向序列,另一個處理反向序列。這種設計使得模型能夠同時利用過去和未來的上下文信息。

代碼實現

class BidirectionalLSTM(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(BidirectionalLSTM, self).__init__()self.hidden_size = hidden_sizeself.lstm = nn.LSTM(input_size, hidden_size, batch_first=True, bidirectional=True)self.fc = nn.Linear(hidden_size * 2, output_size)  # 兩個方向的隱藏狀態拼接def forward(self, x):out, _ = self.lstm(x)out = self.fc(out[:, -1, :])return out# 測試雙向LSTM
if __name__ == "__main__":model = BidirectionalLSTM(input_size=10, hidden_size=20, output_size=5)input_data = torch.randn(3, 10, 10)  # 批量大小3,序列長度10,輸入特征10output = model(input_data)print(output.shape)  # 輸出應為torch.Size([3, 5])

特點

  • 利用雙向信息:能夠同時利用序列的過去和未來信息,提高模型的上下文理解能力。
  • 適合上下文相關任務:適用于需要上下文信息的任務,如情感分析、命名實體識別。
2.3 卷積LSTM(ConvLSTM)

卷積LSTM將卷積操作引入LSTM架構,適用于處理空間序列數據,如視頻分析和氣象數據預測。

數學表達
卷積LSTM的更新公式與標準LSTM類似,但使用卷積操作代替全連接操作。例如,遺忘門的更新公式為:
f t = σ ( W f ? [ h t ? 1 , x t ] + b f ) f_t = \sigma(W_f \ast [h_{t-1}, x_t] + b_f) ft?=σ(Wf??[ht?1?,xt?]+bf?)
其中, ? \ast ? 表示卷積操作。

代碼實現

import torch
import torch.nn as nnclass ConvLSTMCell(nn.Module):def __init__(self, input_size, hidden_size, kernel_size):super(ConvLSTMCell, self).__init__()self.hidden_size = hidden_sizeself.conv = nn.Conv2d(input_size + hidden_size, hidden_size * 4, kernel_size, padding=kernel_size // 2)def forward(self, x, state):h_prev, c_prev = statecombined = torch.cat([x, h_prev], dim=1)gates = self.conv(combined)gates = gates.chunk(4, 1)i = torch.sigmoid(gates[0])f = torch.sigmoid(gates[1])o = torch.sigmoid(gates[2])g = torch.tanh(gates[3])c_next = f * c_prev + i * gh_next = o * torch.tanh(c_next)return h_next, c_nextclass ConvLSTM(nn.Module):def __init__(self, input_size, hidden_size, kernel_size, num_layers):super(ConvLSTM, self).__init__()self.hidden_size = hidden_sizeself.num_layers = num_layersself.cells = nn.ModuleList([ConvLSTMCell(input_size if i == 0 else hidden_size, hidden_size, kernel_size)for i in range(num_layers)])def forward(self, x, states=None):if states is None:states = [None] * self.num_layersoutputs = []for t in range(x.size(1)):x_t = x[:, t, :, :, :]for i in range(self.num_layers):if states[i] is None:states[i] = (torch.zeros(x_t.size(0), self.hidden_size, x_t.size(2), x_t.size(3)).to(x.device),torch.zeros(x_t.size(0), self.hidden_size, x_t.size(2), x_t.size(3)).to(x.device))x_t, states[i] = self.cells[i](x_t, states[i])outputs.append(x_t)return torch.stack(outputs, dim=1), states# 測試ConvLSTM
if __name__ == "__main__":model = ConvLSTM(input_size=3, hidden_size=64, kernel_size=3, num_layers=2)input_data = torch.randn(2, 10, 3, 64, 64)  # 批量大小2,序列長度10,通道3,高度64,寬度64output, _ = model(input_data)print(output.shape)  # 輸出應為torch.Size([2, 10, 64, 64, 64])

特點

  • 處理空間序列數據:適用于視頻分析、氣象數據等空間序列任務。
  • 保留空間信息:通過卷積操作保留空間特征。
2.4 注意力LSTM(Attention LSTM)

注意力LSTM通過引入注意力機制,使得模型能夠動態地關注序列中的重要部分,提高模型對關鍵信息的捕捉能力。

代碼實現

class AttentionLSTM(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(AttentionLSTM, self).__init__()self.hidden_size = hidden_sizeself.lstm = nn.LSTM(input_size, hidden_size, batch_first=True)self.attention = nn.Linear(hidden_size, hidden_size)self.v = nn.Parameter(torch.rand(hidden_size))self.fc = nn.Linear(hidden_size, output_size)def forward(self, x):out, (h_n, c_n) = self.lstm(x)# 計算注意力權重attention_scores = torch.bmm(out, self.v.repeat(out.size(0), 1, 1).permute(0, 2, 1))attention_weights = torch.softmax(attention_scores, dim=1)# 加權求和context = torch.bmm(attention_weights.permute(0, 2, 1), out)out = self.fc(context[:, -1, :])return out# 測試注意力LSTM
if __name__ == "__main__":model = AttentionLSTM(input_size=10, hidden_size=20, output_size=5)input_data = torch.randn(3, 10, 10)  # 批量大小3,序列長度10,輸入特征10output = model(input_data)print(output.shape)  # 輸出應為torch.Size([3, 5])

特點

  • 動態關注關鍵信息:通過注意力機制動態調整對序列中不同位置的關注程度。
  • 提升關鍵信息捕捉能力:適用于需要關注序列中關鍵部分的任務,如機器翻譯、文本生成。
2.5 LayerNorm LSTM

LayerNorm LSTM通過在LSTM內部應用層歸一化(Layer Normalization),提高模型的訓練穩定性和收斂速度。

代碼實現

class LayerNormLSTM(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(LayerNormLSTM, self).__init__()self.hidden_size = hidden_sizeself.lstm = nn.LSTM(input_size, hidden_size, batch_first=True)self.layernorm = nn.LayerNorm(hidden_size)self.fc = nn.Linear(hidden_size, output_size)def forward(self, x):out, _ = self.lstm(x)out = self.layernorm(out)out = self.fc(out[:, -1, :])return out# 測試LayerNorm LSTM
if __name__ == "__main__":model = LayerNormLSTM(input_size=10, hidden_size=20, output_size=5)input_data = torch.randn(3, 10, 10)  # 批量大小3,序列長度10,輸入特征10output = model(input_data)print(output.shape)  # 輸出應為torch.Size([3, 5])

特點

  • 提高訓練穩定性:通過層歸一化穩定隱藏狀態的分布。
  • 加速收斂:歸一化操作有助于加快模型的收斂速度。

這些LSTM的變體在不同的應用場景中各有優勢。深度LSTM增強了模型的表示能力,雙向LSTM利用了雙向上下文信息,卷積LSTM適用于空間序列數據,注意力LSTM提升了對關鍵信息的捕捉能力,而LayerNorm LSTM提高了訓練的穩定性和速度。根據具體任務的需求,可以選擇合適的LSTM變體來構建模型。

3 注意力機制

注意力機制(Attention Mechanism)是一種允許模型在處理輸入序列時動態關注不同部分的機制。它在自然語言處理、計算機視覺等多個領域取得了顯著的成果。注意力機制通過計算輸入序列中各個位置的重要性權重,使模型能夠更好地捕捉關鍵信息。

3.1 注意力機制的核心思想

注意力機制的核心思想是讓模型在處理每個時間步時,能夠動態地關注輸入序列中與當前任務最相關的部分。這種機制特別適用于處理長序列數據,因為它能夠緩解長期依賴問題,使模型能夠有效地捕捉序列中的重要信息。

3.2 注意力機制的類型
  1. Bahdanau Attention:這是最常用的注意力機制之一,通過計算隱藏狀態與編碼器輸出的點積來得到注意力分數。
  2. 多頭注意力(Multi-Head Attention):在變壓器(Transformer)模型中廣泛使用,通過多個注意力頭來捕捉不同維度的信息。
  3. 自注意力(Self-Attention):用于捕捉序列內部不同位置之間的依賴關系。
3.3 Bahdanau Attention 的實現

以下是一個使用 Bahdanau Attention 的循環神經網絡實現示例:

import torch
import torch.nn as nn
import torch.nn.functional as Fclass BahdanauAttention(nn.Module):def __init__(self, hidden_size):super(BahdanauAttention, self).__init__()self.Wa = nn.Linear(hidden_size, hidden_size)self.Ua = nn.Linear(hidden_size, hidden_size)self(va) = nn.Parameter(torch.FloatTensor(hidden_size))def forward(self, decoder_hidden, encoder_outputs):# decoder_hidden: [batch_size, hidden_size]# encoder_outputs: [sequence_length, batch_size, hidden_size]sequence_length = encoder_outputs.size(0)batch_size = encoder_outputs.size(1)# 將解碼器隱藏狀態擴展到與編碼器輸出相同的序列長度decoder_hidden_expanded = self.Wa(decoder_hidden).unsqueeze(0).expand(sequence_length, -1, -1)# 計算注意力分數attention_scores = torch.tanh(self.Ua(encoder_outputs) + decoder_hidden_expanded)attention_scores = torch.matmul(attention_scores, self.va)# 計算注意力權重attention_weights = F.softmax(attention_scores, dim=0)# 加權求和得到上下文向量context_vector = torch.sum(attention_weights * encoder_outputs, dim=0)return context_vector, attention_weightsclass AttentionRNN(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(AttentionRNN, self).__init__()self.hidden_size = hidden_sizeself.lstm = nn.LSTM(input_size, hidden_size, batch_first=True)self.attention = BahdanauAttention(hidden_size)self.fc = nn.Linear(hidden_size * 2, output_size)def forward(self, inputs, encoder_outputs):# inputs: [batch_size, sequence_length, input_size]# encoder_outputs: [sequence_length, batch_size, hidden_size]batch_size = inputs.size(0)sequence_length = inputs.size(1)# 初始化隱藏狀態h0 = torch.zeros(1, batch_size, self.hidden_size).to(inputs.device)c0 = torch.zeros(1, batch_size, self.hidden_size).to(inputs.device)# LSTM編碼器encoder_outputs, (hn, cn) = self.lstm(inputs, (h0, c0))# 初始化解碼器隱藏狀態decoder_hidden = hn.squeeze(0)# 解碼器輸入decoder_input = inputs[:, -1, :]# 計算注意力context_vector, attention_weights = self.attention(decoder_hidden, encoder_outputs)# 拼接解碼器輸入和上下文向量combined = torch.cat((decoder_hidden, context_vector), dim=1)# 全連接層output = self.fc(combined)return output, attention_weights# 測試注意力機制
if __name__ == "__main__":model = AttentionRNN(input_size=10, hidden_size=20, output_size=5)inputs = torch.randn(3, 10, 10)  # 批量大小3,序列長度10,輸入特征10outputs, attention_weights = model(inputs, inputs.permute(1, 0, 2))print(outputs.shape)  # 輸出應為torch.Size([3, 5])
3.4 注意力機制的應用場景
  • 自然語言處理:機器翻譯、文本生成、問答系統。
  • 計算機視覺:圖像描述生成、目標檢測。
  • 語音識別:語音到文本的轉換。
3.5 注意力機制的優勢
  • 動態關注關鍵信息:注意力機制能夠動態調整對序列中不同位置的關注程度,使模型更好地捕捉關鍵信息。
  • 提高模型性能:通過關注重要信息,注意力機制能夠提高模型在多種任務上的性能。
  • 解釋模型決策:注意力權重可以用于可視化模型的關注點,幫助理解模型的決策過程。

通過注意力機制,模型能夠更有效地處理序列數據,捕捉長期依賴關系,提高任務性能。

4 循環神經網絡的應用

循環神經網絡(RNN)及其變體(如LSTM和GRU)在許多領域都有廣泛的應用,尤其在處理序列數據方面表現出色。以下是一些典型的應用場景:

4.1 機器翻譯

機器翻譯是自然語言處理中的一個重要任務,目標是將一種語言的文本自動翻譯成另一種語言。循環神經網絡可以用于構建序列到序列(Seq2Seq)模型,該模型包含一個編碼器和一個解碼器,分別用于處理輸入序列和生成輸出序列。

import torch
import torch.nn as nn
import torch.nn.functional as Fclass Seq2Seq(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(Seq2Seq, self).__init__()self.encoder = nn.LSTM(input_size, hidden_size, batch_first=True)self.decoder = nn.LSTM(hidden_size, hidden_size, batch_first=True)self.fc = nn.Linear(hidden_size, output_size)def forward(self, src, trg):# 編碼器encoder_out, (hidden, cell) = self.encoder(src)# 解碼器decoder_out, _ = self.decoder(trg, (hidden, cell))# 全連接層output = self.fc(decoder_out)return output# 測試機器翻譯模型
if __name__ == "__main__":model = Seq2Seq(input_size=10, hidden_size=20, output_size=10)src = torch.randn(3, 10, 10)  # 源語言序列trg = torch.randn(3, 10, 10)  # 目標語言序列output = model(src, trg)print(output.shape)  # 輸出應為torch.Size([3, 10, 10])
4.2 文本生成

文本生成任務的目標是生成與訓練數據風格相似的新文本。循環神經網絡可以通過學習文本的特征來生成新的文本序列。

class TextGenerator(nn.Module):def __init__(self, vocab_size, embedding_dim, hidden_size):super(TextGenerator, self).__init__()self.embedding = nn.Embedding(vocab_size, embedding_dim)self.gru = nn.GRU(embedding_dim, hidden_size, batch_first=True)self.fc = nn.Linear(hidden_size, vocab_size)def forward(self, x, h=None):x = self.embedding(x)out, h = self.gru(x, h)out = self.fc(out)return out, h# 測試文本生成模型
if __name__ == "__main__":model = TextGenerator(vocab_size=1000, embedding_dim=128, hidden_size=256)input_data = torch.randint(0, 1000, (3, 10))  # 批量大小3,序列長度10output, _ = model(input_data)print(output.shape)  # 輸出應為torch.Size([3, 10, 1000])
4.3 情感分析

情感分析是自然語言處理中的另一個重要任務,目標是確定文本表達的情感傾向(如積極、消極或中性)。循環神經網絡可以用于處理文本序列并進行分類。

class SentimentAnalyzer(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(SentimentAnalyzer, self).__init__()self.lstm = nn.LSTM(input_size, hidden_size, batch_first=True)self.fc = nn.Linear(hidden_size, output_size)def forward(self, x):out, _ = self.lstm(x)out = self.fc(out[:, -1, :])return out# 測試情感分析模型
if __name__ == "__main__":model = SentimentAnalyzer(input_size=10, hidden_size=20, output_size=2)input_data = torch.randn(3, 10, 10)  # 批量大小3,序列長度10,輸入特征10output = model(input_data)print(output.shape)  # 輸出應為torch.Size([3, 2])
4.4 語音識別

語音識別任務的目標是將語音信號轉換為文本。循環神經網絡可以用于處理語音信號的特征序列并生成對應的文本。

class SpeechRecognizer(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(SpeechRecognizer, self).__init__()self.lstm = nn.LSTM(input_size, hidden_size, batch_first=True)self.fc = nn.Linear(hidden_size, output_size)def forward(self, x):out, _ = self.lstm(x)out = self.fc(out[:, -1, :])return out# 測試語音識別模型
if __name__ == "__main__":model = SpeechRecognizer(input_size=40, hidden_size=20, output_size=1000)input_data = torch.randn(3, 100, 40)  # 批量大小3,序列長度100,輸入特征40output = model(input_data)print(output.shape)  # 輸出應為torch.Size([3, 1000])
4.5 時間序列預測

時間序列預測任務的目標是根據歷史數據預測未來的值。循環神經網絡可以用于處理時間序列數據并進行預測。

class TimeSeriesPredictor(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(TimeSeriesPredictor, self).__init__()self.gru = nn.GRU(input_size, hidden_size, batch_first=True)self.fc = nn.Linear(hidden_size, output_size)def forward(self, x):out, _ = self.gru(x)out = self.fc(out[:, -1, :])return out# 測試時間序列預測模型
if __name__ == "__main__":model = TimeSeriesPredictor(input_size=1, hidden_size=20, output_size=1)input_data = torch.randn(3, 10, 1)  # 批量大小3,序列長度10,輸入特征1output = model(input_data)print(output.shape)  # 輸出應為torch.Size([3, 1])

循環神經網絡在這些應用場景中發揮了重要作用,通過捕捉序列數據中的時間依賴關系,提高了模型的性能和準確性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83359.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83359.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83359.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

牛市與熊市:市場周期的雙面鏡

牛市推動資產增值與風險積累,熊市擠壓泡沫并孕育機會,兩者交替循環,構成市場自我調節機制。 1、概念對比:情緒與趨勢的博弈 牛市(Bull Market):指資產價格持續上漲(通常漲幅超20%&a…

web程序設計期末復習-填空題

常用標簽 塊級標記 行內標記等 一、塊級元素 特點&#xff1a; 獨占一行可以設置寬度、高度、內外邊距默認情況下會從上到下垂直排列 常見標簽&#xff1a; 標簽 含義 <div> 最常用的通用塊級容器 <p> 段落 <h1>到<h6> 標題&#xff08;一級…

go全局配置redis,全局只需要連接一次,然后全局可以引用使用

創建redis文件夾、創建dadeRedis.go package redisimport ("context""github.com/go-redis/redis/v8""log""time" )var (client *redis.Clientctx context.Background() )// 初始化Redis連接&#xff08;建議在程序啟動時調用&am…

緩沖區(C語言緩沖區+內核緩沖區)一個例子解釋他們的關系和作用!!!

首先提出問題&#xff1a; 為什么以下代碼是先sleep三秒后&#xff0c;屏幕才顯示"XXXXXXX"。 #include<stdio.h> #include<unistd.h>int main() {printf("XXXXXXX");sleep(3);return 0; } 為什么以下代碼是先顯示"XXXXXXX"&#xf…

【2025版】Java 工程師學習路線圖 —— 掌握程度描述版

?【2025版】Java 工程師學習路線圖 &#x1f4a1; 目標&#xff1a;成為合格的 Java 工程師&#xff08;前后端都要會&#xff09; &#x1f4dd; 結構清晰 | 階段明確 | 掌握程度分級 | 適合自學或轉行 &#x1f539; 階段一&#xff1a;編程基礎 計算機通識 模塊內容推薦掌…

從零實現一個紅隊智能體

從零實現一個紅隊智能體(持續更新) 2025-06-09 背景&#xff1a;最近學了基礎些東西和工具基礎使用&#xff0c;發現一套流程下來太多需要手工要做的&#xff0c;就像自己能不能結合自己的技術棧實現小工具 &#x1f947; 第一步&#xff1a;從實用性開始分析 目標場景 希望…

Uniapp實現多選下拉框

文章目錄 前言一、效果展示1.1 下拉效果圖1.2 下拉選擇效果圖1.3 選擇顯示效果圖 二、組件源碼2.1.CustomCheckbox.vue源碼2.2.niceui-popup-select.vue源碼 三、demo.vue代碼演示 前言 之前在使用Uniapp時&#xff0c;一直都是下拉框單選。今天某個項目需求需要使用Uniapp實現…

JavaScript-Array.from

Array.from() 是 JavaScript 中用于將類數組對象&#xff08;array-like&#xff09;或可迭代對象&#xff08;iterable&#xff09;轉換為真實數組的一個非常有用的方法。 &#x1f4cc; 一、基本語法 Array.from(arrayLike, mapFn?, thisArg?)參數說明&#xff1a; 參數類…

二刷蒼穹外賣 day02

新增員工 DTO 將前端傳遞的參數列表通過對應的實體類接收 當前端提交的數據和實體類中對應的屬性差別較大時&#xff0c;使用DTO來封裝數據 Data public class EmployeeDTO implements Serializable {private Long id;private String username;private String name;private…

通過Heron Handoff 插件我們在figma設計中可以像sketch導出離線標注

一、設計交付的歷史困境與破局契機 在數字產品開發的全流程中&#xff0c;設計標注的高效傳遞始終是連接創意與實現的關鍵紐帶。傳統設計工具如 Sketch 憑借 Bluebeam、Sketch Measure 等插件構建了成熟的離線標注體系&#xff0c;設計師可將標注文件打包交付&#xff0c;開發…

SSE 數據的傳輸無法流式獲取

問題 調試過程中發現SSE數據返回的時間都是一樣的&#xff0c;懷疑是接口問題。 參考 EventSource數據一次性出來&#xff0c;并未流式輸出的原因_sourceevent為什么結果一下全部返回了-CSDN博客 處理 EventStream 不能流式返回的問題&#xff1a;Nginx 配置優化 解決方案 …

markdown文本轉換時序圖

好久沒更新了~這篇是markdown文本轉換時序圖的常用方法 文章目錄 前言一、Mermaid語法示例二、PlantUML語法示例三、在線工具快速轉換總結 前言 使用專業工具如Mermaid或PlantUML可以直接在Markdown中繪制時序圖。這些工具支持簡潔的語法&#xff0c;生成可嵌入文檔的圖表&…

谷粒商城-分布式微服務 -集群部署篇[一]

十九、k8s 集群部署 19.1 k8s 快速入門 19.1.1 簡介 Kubernetes 簡稱 k8s。是用于自動部署&#xff0c;擴展和管理容器化應用程序的開源系統。 中文官網 中文社區 官方文檔 社區文檔 概述 | Kubernetes 傳統部署時代&#xff1a; 早期&#xff0c;各個組織是在物理服務器上…

微信小程序- 用canvas生成排行榜

設計功能不是很復雜&#xff0c;也不想用插件&#xff0c;最終出現現在版本&#xff0c;主要用到微信小程序 wx.canvasToTempFilePath方法 // 直接調用改方法 createQRCode() {const qrCodeCanvasId "qrcodeCanvas";drawQrcode({width: 200,height: 200,canvasId: …

深度剖析:UI 設計怎樣為小程序構建極致輕量體驗

內容摘要 在小程序的世界里&#xff0c;用戶都追求快速、便捷的輕量體驗。但你是否好奇&#xff0c;為啥有些小程序能讓人輕松上手&#xff0c;快速達成目標&#xff0c;而有些卻讓人感覺繁瑣、卡頓&#xff1f;這里的關鍵差異&#xff0c;往往就藏在 UI 設計中。UI 設計到底施…

【網絡安全】Qt免殺樣本分析

初步研判 SHA256&#xff1a;9090807bfc569bc8dd42941841e296745e8eb18b208942b3c826b42b97ea67ff 我們可以看到引擎0檢出&#xff0c;是個免殺樣本&#xff0c;不過通過微步云沙箱的行為分析&#xff0c;已經被判為惡意 行為分析 進程行為 可以看到demo顯示調用了winver獲…

window 顯示驅動開發-如何查詢視頻處理功能(六)

D3DDDICAPS_FILTERPROPERTYRANGE請求類型 UMD 返回指向 DXVADDI_VALUERANGE 結構的指針&#xff0c;該結構包含傳遞D3DDDICAPS_FILTERPROPERTYRANGE請求類型時特定視頻流上特定篩選器設置允許的值范圍。 Direct3D 運行時在D3DDDIARG_GETCAPS的 pInfo 成員指向的變量中為特定視…

Oracle線上故障問題解決

----重啟電腦找不到sid Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor Could not open connection sqlplus "/as sysdba" SQL> shutdown immediate 數據庫…

語音信號處理三十——高效多相抽取器(Polyphase+Noble)

文章目錄 前言一、Polyphase 多項分解1.定義2.拆分公式3.推導過程1&#xff09;按模 M M M拆分求和項2&#xff09;提取因子 4.總結 二、Noble恒等式1. 定義2.Noble恒等式表達方式1&#xff09;抽取系統的 Noble 恒等式2&#xff09;插值系統的 Noble 恒等式 2.Nodble恒等式推導…

廣告推薦系統中模型訓練中模型的結構信息、Dense數據、Sparse數據

下面結合廣告推薦系統常見的深度學習模型(比如 Wide & Deep、DeepFM、Two-Tower 等),介紹一下“模型的結構信息”、Dense 數據和 Sparse 數據在訓練過程中的角色及處理方式。 模型結構信息 輸入層(Input Layer) ? Sparse 輸入:各類離散高維特征(用戶 ID、廣告 ID、…