PyTorch生成式人工智能實戰:從零打造創意引擎

PyTorch生成式人工智能實戰:從零打造創意引擎

    • 0. 前言
    • 1. 生成式人工智能
      • 1.1 生成式人工智能簡介
      • 1.2 生成式人工智能技術
    • 2. Python 與 PyTorch
      • 2.1 Python 編程語言
      • 2.2 PyTorch 深度學習庫
    • 3. 生成對抗網絡
      • 3.1 生成對抗網絡概述
      • 3.2 生成對抗網絡應用
    • 4. Transformer
      • 4.1 注意力機制
      • 4.2 Transformer 架構
      • 4.3 多模態 Transformer 和預訓練大語言模型
    • 5. 專欄目標
    • 小結

0. 前言

生成式人工智能 (Generative AI, GAI) 自 ChatGPT 問世以來,引發了廣泛關注,并成為了技術領域的焦點。生成式人工智能技術極大的改變了我們日常生活的多個方面,開啟了技術的新紀元,并激發了大量研究人員探索各種生成模型所提供的廣泛可能性。
例如,Midjourney 已經實現了從簡短的文本輸入生成高分辨率、逼真圖像的技術。類似地,軟件公司 Freshworks 通過 ChatGPT 的強大功能,顯著加速了應用程序開發,將原本需要 10 周時間的開發周期縮短到僅僅幾天。生成式人工智能技術進步的影響遠不止于此,如今,生成式人工智能技術能夠生成與人類寫作相媲美的文章,創作出類似經典音樂作品的樂曲,快速生成復雜的文本文件,這些任務通常需要大量的人工精力和時間。
本專欄深入探討了生成式人工智能,這項技術通過其高效和快速的內容創作能力,正在重塑眾多行業。具體來說,將學習如何使用生成式模型來創建各種形式的內容:數字、圖像、文本和音頻。此外,還將學習從零開始構建這些模型,以便深入理解生成式 AI 的內部工作原理,我們將使用 PythonPyTorch 來構建、訓練和使用這些模型。

1. 生成式人工智能

本節解釋了什么是生成式人工智能 (Generative AI, GAI),以及它與非生成式人工智能(判別模型)的不同之處。GAI 具有創造多種形式新內容的非凡能力,包括文本、圖像、音頻、視頻、代碼以及復雜的模式。GAI 能夠創造出新穎的內容世界,ChatGPT 是一個典型例子。與此相對,判別模型主要關注識別和分類已存在的內容。

1.1 生成式人工智能簡介

生成式人工智能是一種通過學習現有數據的模式來創建新內容的人工智能類型,如文本、圖像或音樂。與判別模型不同,后者專注于識別不同數據實例之間的差異,并學習不同類別之間的邊界。下圖展示了這兩種建模方法之間的區別。例如,當面對一組包含狗和貓的圖像時,判別模型通過捕捉一些關鍵特征(例如,貓有小鼻子和尖耳朵)來判斷每張圖片是狗還是貓。判別模型將數據作為輸入,并輸出不同標簽的概率,這些概率分別表示為 Prob(dog)Prob(cat) 。然后,可以根據最高的預測概率來標記輸入數據。

GAI

相比之下,生成模型具有能夠生成全新數據實例的獨特能力。在關于狗與貓示的例中,生成模型通過深入理解這些圖像的定義特征,來合成表示狗和貓的新圖像。生成模型將任務描述(例如在潛空間中變化的值,這些變化會導致生成不同特征的圖像)作為輸入,產生新的狗和貓圖像。
從統計學的角度來看,當給定具有特征X的數據實例和相應標簽 Y 時,判別模型的任務是預測條件概率 prob(Y|X)。相反,生成模型試圖學習輸入特征 X 和目標變量 Y 的聯合概率分布 prob(X, Y),然后從該分布中采樣,生成新的 X 實例。

1.2 生成式人工智能技術

根據想要創建的內容的具體形式,生成模型有不同的類型。在本專欄中,主要聚焦于兩種典型技術:生成對抗網絡 (Generative Adversarial Network, GAN) 和 Transformer,但也會涵蓋變分自編碼器、能量模型和擴散模型等。GAN 中的“對抗”一詞指的是兩個神經網絡在零和博弈框架下相互競爭:生成網絡試圖創建無法與真實樣本區分的數據實例,而鑒別網絡則試圖識別生成樣本與真實樣本的區別。兩個網絡之間的競爭推動了雙方的共同改進,最終使得生成網絡能夠創造出高度逼真的數據。Transformer 是深度神經網絡,能夠高效地解決序列到序列的預測任務。
GAN 因其易于實現和多功能性而廣受歡迎,這些多功能的模型能夠創造出各種各樣的內容,從幾何形狀和復雜圖案,再到高質量的彩色圖像,如人臉圖像,此外,GAN 還具備轉換圖像內容的能力,可以無縫地將一張擁有金發的人臉圖像變為黑發人臉圖像。GAN 還能夠將其創作能力擴展到音樂生成領域,創作出逼真的音樂作品。
與幾何形狀、數字或圖像生成不同,文本生成面臨著巨大的挑戰,主要是因為文本信息的順序性特征,其中單個字符和單詞的的順序和排列具有重要意義。為了解決這種復雜性,我們引入了 Transformer,一種旨在高效地解決序列到序列的預測任務的深度神經網絡。與循環神經網絡或卷積神經網絡不同,Transformer 在捕捉輸入和輸出序列中復雜的長程依賴關系方面表現卓越。需要注意的是,Transformer 具備并行訓練能力(能夠在多個設備上同時進行訓練),顯著縮短了訓練時間,使我們能夠在海量數據上訓練 Transformer 模型。
Transformer 架構是大語言模型( Large language model, LLM,指具有大量參數并在大規模數據集上訓練的深度神經網絡)的基礎,包括 ChatGPTBERTDALL-ET5 等。Transformer 架構為 AI 領域的飛躍性進展奠定了基礎,并推動了 ChatGPT 以及其他生成式預訓練 Transformer (Generative Pretrained Transformer, GPT) 模型的出現。

2. Python 與 PyTorch

2.1 Python 編程語言

2018 年以來,Python 已成為廣泛應用的編程語言。Python 不僅允許用戶創建和修改庫,而且擁有一個龐大的生態系統,因此可以輕松獲取資源。而且可以導入現成的庫,避免重新發明輪子,同時也能將自己的代碼與 Python 社區共享。
Python 是一個跨平臺語言,無論使用的是 WindowsMac 還是 Linux,雖然根據操作系統的不同,安裝軟件和庫的過程可能會有所不同,但 Python 代碼在不同系統上的表現是一樣的。
Python 是一種富有表現力的語言,適用于通用應用開發,語法易于掌握,能夠輕松理解和使用。Python 提供了大量的庫,使得相較于其他語言(如 C++R),創建生成模型更加容易。

2.2 PyTorch 深度學習庫

Python 中,最受歡迎的 AI 框架是 PyTorchTensorFlow。在本專欄中,我們選擇 PyTorch 而非 TensorFlow,主要是因為它更易于使用。
PyTorch 是由 MetaAI 研究實驗室開發的開源機器學習庫。它建立在 Python 編程語言和 Torch 庫之上,旨在為創建和訓練深度學習模型提供一個靈活且直觀的平臺,PyTorch 的設計目標是滿足研究人員和開發人員的需求,提供一個更加用戶友好且可擴展的深度學習框架。
計算圖是深度學習中的一個基礎概念,它在高效計算復雜數學運算方面起著關鍵作用,尤其是涉及多維數組或張量的運算。計算圖是一個有向圖,其中節點表示數學操作,邊表示這些操作之間流動的數據。計算圖的一個關鍵用途是在實現反向傳播和梯度下降算法時計算偏導數。圖結構使得在訓練過程中更新模型參數時,能夠高效地計算所需的梯度。PyTorch 會實時創建和修改計算圖,即所謂的動態計算圖。這使得 PyTorch 能夠更好地適應不同的模型架構,并簡化調試過程。PyTorch 通過 GPU 加速計算,顯著減少了相較于 CPU 訓練所需的時間。
PyTorch 的設計與 Python 編程語言非常契合。其語法簡潔易懂,使得初學者和經驗豐富的開發人員都能輕松上手。得益于其動態計算圖和簡潔的接口,使得快速實驗新想法成為可能。這種靈活性在生成式 AI 等快速發展的領域尤為重要。PyTorch 還擁有一個迅速發展的社區,形成了一個豐富的生態系統,包括庫、工具和資源,供開發者使用。PyTorch 與其他 Python 庫(如 NumPyMatplotlib )兼容。這種互操作性使得用戶能夠無縫地將 PyTorch 集成到現有的工作流中,從而提高生產力。
由于深度學習中模型的訓練需要大量時間,因此通常使用 GPU加速計算,在安裝 PyTorch 之前需要根據選用的 PyTorch 版本和顯卡安裝 CUDAcudnn,關于 CUDAcudnn 的安裝和配置可以參考官方文檔,建議在安裝之前根據自己的操作系統認真查看官方的安裝文檔,可以避免踩不必要的坑。如果計算機中含有 NVIDIA 顯卡作為硬件組件,建議安裝 CUDA 驅動程序,該驅動程序可將深度學習訓練速度提高幾個數量級。
然后,在 PyTorch 官方網頁,根據自己實際的環境,進行相應的選擇,在 Run this Command 欄中將給出安裝 PyTorch 的命令:

Run this Command

在此,我們以 LinuxpipPythonCUDA10.2 為例,復制并在終端執行安裝命令:

pip3 install torch torchvision torchaudio

為了確認 PyTorch 已正確安裝,可以在 Python shell 中運行以下代碼:

>>> import torch
>>> test = torch.empty(2,2)
>>> print(test)
tensor([[2.9685e-26, 4.5722e-41],[2.9685e-26, 4.5722e-41]])

如果能夠正確調用 PyTorch 相關函數,表明 PyTorch 已正確安裝。需要注意的是,以上代碼中,使用 torch.emty() 中創建了一個尺寸為 2 x 2 的張量,它是一個空矩陣,這里的“空”并不意味著所有元素的值都為 Null,而是使用一些被認為是占位符的無意義浮點數,需要在之后進行賦值,這與 NumPy 中的空數組類似。

3. 生成對抗網絡

本節首先介紹生成對抗網絡 (Generative Adversarial Network, GAN) 工作原理。然后,使用動漫面部圖像生成作為示例,展示 GAN 的內部工作原理。最后,討論 GAN 的實際應用。

3.1 生成對抗網絡概述

生成對抗網絡 (Generative Adversarial Network, GAN) 是一類生成模型,因為 GAN 易于構建和訓練,且能夠生成各種各樣的內容而變得及其流行。GAN 的核心是雙網絡架構,包含一個生成器和一個鑒別器。生成器負責捕捉數據的潛分布以生成內容,而鑒別器則用于估計給定樣本是來自真實訓練數據集(視為“真實”)或來自生成器所生成的偽造樣本(視為“虛假”)。模型的主要目標是生成與訓練數據集中的實例相似的新數據,GANs生成的數據特性取決于訓練數據集的構成。例如,如果訓練數據由灰度圖像的服裝組成,則生成的圖像將與這些服裝高度相似,而如果訓練數據集包含的是人臉的彩色圖像,那么生成的圖像也將類似于人臉。
GAN 的架構及其組件如下圖所示。為了訓練模型,訓練數據集中的真實樣本和由生成器生成的虛假樣本一起提供給鑒別器。生成器的主要目標是創建與訓練數據集中實例幾乎無法區分的數據實例。相反,鑒別器則致力于區分由生成器生成的虛假樣本與真實樣本。這兩個網絡通過競爭過程不斷進行博弈,試圖通過迭代超越對方。

GAN

GAN 模型的訓練需要通過多個迭代。在每次迭代中,生成器首先接收某種形式的任務描述,并利用該任務描述生成偽造圖像;將這些偽造圖像與來自訓練集的真實圖像一起提供給鑒別器,鑒別器嘗試將每個樣本分類為真實或虛假。接著,鑒別器將分類結果與實際標簽(真實標簽)進行比較,生成器和鑒別器根據分類結果獲得反饋,并通過反饋改進各自的能力:鑒別器通過不斷調整來提高識別虛假樣本的能力,而生成器則學習如何生成更具迷惑性的樣本以騙過鑒別器。隨著訓練的進行,兩個網絡最終達到一個平衡點,這時兩個網絡都無法進一步改進,此時生成器能夠生成與真實樣本幾乎無法區分的數據樣本。

3.2 生成對抗網絡應用

GAN 易于實現且用途廣泛,可以用于生成幾何形狀、復雜圖案、高分辨率圖像,以及逼真的音樂。GAN 的實際應用不僅限于生成逼真的數據,還可以將一個圖像域中的屬性轉化為另一個圖像域,例如,訓練 CycleGAN 模型,將人臉圖像中的金發轉變為黑發,或反之將黑發轉為金發。
GAN 同樣具有廣泛的實用場景。假設,一個服裝店,在生產之前允許用戶進行定制,網站展示了大量獨特的設計供客戶選擇,但問題是:只會在有人下單后才開始制作這些衣服。而制作這些衣服的高質量圖像較為昂貴,因為必須先生產出衣服,然后再拍攝照片。而使用 GAN 將極大的簡化此過程,無需擁有大量生產出來的服裝和照片,可以使用 CycleGAN 將一組圖像中的特征轉化為另一組圖像,從而創造出全新的風格。這只是使用 GAN 的一個簡單示例,利用 GAN 模型的多功能性能夠創建無窮的可能性。

4. Transformer

Transformer 是一種擅長處理序列到序列預測問題的深度神經網絡,例如接受輸入句子并預測最可能的下一個詞匯。本節將介紹 Transformer 的關鍵創新點:自注意力機制。然后我們將討論 Transformer 架構和不同類型的 Transformer。最后,我們將討論 Transformer 的一些最新進展,例如多模態模型(輸入不僅包括文本,還包括音頻和圖像等其他數據類型)和預訓練大語言模型(基于大規模文本數據進行訓練的模型,能夠執行各種下游任務)。
Transformer 架構提出之前,自然語言處理 (Natural Language Processing, NLP) 和其他序列到序列的預測任務主要是通過循環神經網絡 (Recurrent Neural Network, RNN) 進行處理。然而,RNN 在保留序列中早期元素的信息方面存在困難,這限制了它們捕捉長期依賴關系的能力。即使是能夠處理更長依賴關系的高級 RNN 變體,如長短期記憶網絡 (Long Short-Term Memory Network, LSTM),在面對極長的依賴關系時依然表現不佳。
更重要的是,RNN (包括 LSTM 等變體)是按順序處理輸入的,這意味著這些模型一次只能處理一個元素,按順序處理,而不是同時查看整個序列。RNN 沿著輸入和輸出序列的順序進行計算,導致其無法進行并行訓練,使得訓練過程變得緩慢。因此,也導致其無法在大規模的數據集上進行訓練。
Transformer 的關鍵創新是自注意力機制,自注意力機制非常擅長捕捉序列中的長期依賴關系。此外,由于輸入在模型中不是按順序處理的,Transformer 可以進行并行訓練,從而大大縮短訓練時間。更重要的是,并行訓練使得模型在大型數據集上訓練成為可能,這使得大語言模型 (Large language model, LLM) 更智能且學習能力更強,能夠用于處理和生成文本,理解上下文并執行各種語言任務。這促成了 ChatGPTLLM 的崛起,并推動了 AI 應用的熱潮。

4.1 注意力機制

注意力機制為序列中每個元素與所有其他元素(包括其自身)之間的關系分配權重。權重越高,兩個元素之間的關系就越緊密,這些權重在訓練過程中從大量的訓練數據中學習得到。因此, 如 ChatGPTDeepSeek 等訓練好的 LLM 能夠理解句子中任意兩個詞之間的關系,從而理解自然語言。
那么注意力機制是如何為序列中的元素分配權重,以捕捉長期依賴關系的?注意力權重是通過首先將輸入通過三個神經網絡層,得到查詢 Q (Query)、鍵 K (Key) 和值 V (Value) 來計算的。使用查詢、鍵和值來計算注意力的方法來源于檢索系統。例如,在圖書館搜索一本書,可以在圖書館的搜索引擎中輸入“PyTorch 生成式人工智能”之類的關鍵詞。在這種情況下,查詢 Q 就是“PyTorch 生成式人工智能”,鍵 K 則是書名、書籍描述等內容。圖書館的檢索系統會根據查詢和鍵之間的相似性推薦一系列書籍(值 V)。自然地,書名或描述中包含“PyTorch”或“生成式人工智能”或同時包含兩者的書籍會排在前面,而那些標題或描述中沒有這些關鍵詞的書籍則會排在列表底部,因為這些書籍會被分配較低的匹配分數。

4.2 Transformer 架構

Transformer 最初是為了構建機器語言翻譯模型,例如,英語翻譯為法語。下圖展示了 Transformer 架構。左側是編碼器 (Encoder),右側是解碼器 (Decoder)。

Transformer

Transformer 中的編碼器“學習”輸入序列的含義(例如,英語短語“How are you?”),并將其轉換為代表這一含義的向量,再將這些向量傳遞給解碼器。解碼器基于序列中先前的單詞和編碼器的輸出,逐個預測下一單詞,從而構建輸出(例如,英語短語的法語翻譯)。訓練好的模型能夠將常見的英語短語翻譯為法語。
Transformer 有三種類型:僅編碼器 Transformer、僅解碼器 Transformer 和編碼器-解碼器 Transformer。僅編碼器 Transformer 沒有解碼器,能夠將一個序列轉換為一個抽象表示,供下游任務使用,如情感分析、命名實體識別和文本生成。例如,BERT 就是一個僅編碼器的 Transformer。僅解碼器 Transformer 沒有編碼器,只有解碼器,適用于文本生成、語言建模和創意寫作。例如,GPT-2ChatGPT 都是僅解碼器 Transformer
編碼器-解碼器 Transformer 適用于處理復雜任務,如多模態模型,能夠處理文本到圖像生成或語音識別等任務。編碼器-解碼器 Transformer 結合了編碼器和解碼器的優點。編碼器擅長處理和理解輸入數據,而解碼器則擅長生成輸出。這個結合使得模型能夠有效理解復雜的輸入(如文本或語音)并生成復雜的輸出(如圖像或轉錄文本)。

4.3 多模態 Transformer 和預訓練大語言模型

多模態模型模型不僅可以處理文本,還能夠處理其他類型的數據,如音頻和圖像。例如,文本到圖像 Transformer,包括 DALL-E 2ImagenStable Diffusion 都是文本到圖像的模型,能夠根據文本提示生成高分辨率圖像。文本到圖像 Transformer 融入了擴散模型的原理,擴散模型涉及一系列的變換,逐漸增加數據的復雜性。因此,在討論文本到圖像 Transformer 之前,首先需要理解擴散模型。
假設通過使用基于擴散的模型生成高分辨率的花卉圖像。首先需要一個高質量的花卉圖像訓練集。然后,模型逐步向這些花卉圖像添加噪聲(即所謂的擴散過程),直到它們變成完全的隨機噪聲。接著,訓練模型逐步去除這些噪聲,從而生成新的數據樣本。擴散過程如下圖所示。左列包含原始的花卉圖像,向右移動的過程中,每一步都向圖像中添加噪聲,直到最右列時,圖像完全變成隨機噪聲。

正向擴散過程

文本到圖像 Transformer 以文本提示作為輸入,生成與該文本描述相對應的圖像。文本提示作為一種條件輸入,模型通過一系列神經網絡層將文本描述轉化為圖像。與擴散模型類似,文本到圖像 Transformer 采用分層架構,每一層逐步為生成的圖像添加更多細節。擴散模型和文本到圖像 Transformer 的核心概念——逐步細化輸出——在兩者之間是相似的。擴散模型因其能夠提供穩定的訓練并生成高質量的圖像,已變得越來越流行,并且在生成效果上超過了其他生成模型,如 GAN 和變分自編碼器。

5. 專欄目標

本專欄的目標是學習如何從零開始構建和訓練生成模型。通過這種方式,對這些模型的內部工作機制有一個全面的了解,從而能夠更好地利用它們,從零開始創建深度學習模型是理解這些模型的最佳方式。從這個角度來看,本專欄并不將生成式人工智能模型當作黑盒模型,而是深入詳細地介紹這些模型的內部工作原理。目標是我們對生成模型有更深刻的理解,構建更好的生成式人工智能,總體而言:

  • 系統進階:內容層層遞進,從 GAN 生成手寫數字起步,直至構建 Transformer 翻譯模型、擴散模型生成花卉圖像,手把手打通生成式人工智能全鏈路
  • 前沿實戰:解鎖 CycleGAN 實現圖像跨域轉換、用 500 萬參數 GPT 復刻海明威文風、打造 AI 助手等硬核項目,代碼即戰力
  • 多模態創意:橫跨圖像、文本、音樂三大領域,揭秘 MuseGAN 作曲、DALL-E 底層技術,成為跨界內容創作者
  • 使用技巧:涵蓋 PyTorch 核心 APIHugging Face 模型調優、擴散模型采樣策略,無縫銜接開源生態

小結

生成式人工智能是一種具備生成多種新內容形式(如文本、圖像、代碼、音樂、音頻和視頻)的技術,判別模型專注于分配標簽,而生成模型則生成新的數據實例。PyTorch 憑借其動態計算圖和支持 GPU 訓練的能力,非常適合用于深度學習和生成建模。《PyTorch生成式人工智能實戰》從神經網絡基礎到 Stable Diffusion 實戰,從零開始實現工業級項目,讓創造力突破想象邊界,用代碼點燃生成式人工智能的無限可能!

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

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

相關文章

allure結合pytest生成測試報告

結合 pytest 和 Allure 可以生成詳細而美觀的測試報告,幫助測試人員和開發者更好地理解測試結果。這包括測試的執行情況、步驟、附件(如截圖)、分類以及優先級標記。下面是如何在 pytest 中使用 Allure 生成測試報告的步驟: 安裝…

STM32標準庫開發中斷流程

在STM32標準外設庫(SPL)開發中,外設中斷的處理流程通常如下: 一、標準庫外設中斷處理流程 (1)使能外設時鐘 在使用任何外設之前,都必須打開外設的時鐘。例如,使用USART1的中斷&…

【計算機網絡】-計算機網絡期末復習題復習資料

一、計算機網絡體系結構(800字) 1. OSI參考模型 七層結構:物理層→數據鏈路層→網絡層→傳輸層→會話層→表示層→應用層 各層核心功能: 物理層:比特流傳輸(如RJ45、光纖接口) 數據鏈路層&…

31天Python入門——第9天:再學函數

你好,我是安然無虞。 文章目錄 再學函數1. 變量在函數中的作用域2. 函數的參數傳遞.補充學習: 不定長參數*args和**kwargs 3. 值傳遞和引用傳遞補充學習: 把函數作為參數傳遞 4. 匿名函數5. python中內置的常用函數zip()map()filter()all()any() 6. 函數練習 再學函…

EasyUI數據表格中嵌入下拉框

效果 代碼 $(function () {// 標記當前正在編輯的行var editorIndex -1;var data [{code: 1,name: 1,price: 1,status: 0},{code: 2,name: 2,price: 2,status: 1}]$(#dg).datagrid({data: data,onDblClickCell:function (index, field, value) {var dg $(this);if(field ! …

【C語言】多進程/多線程

【C語言】多進程/多線程 參考鏈接多進程/多線程服務器1. 多進程服務器2. 多線程服務器 結語參考鏈接 參考鏈接 c 中文網 菜鳥 c 多進程/多線程服務器 多進程和多線程是常用的并發編程技術。它們都允許程序同時執行多個任務,提高了系統的資源利用率和程序的運行效率…

mysql 磐維(opengauss)tidb誤刪數據之高級恢復

Mysql參考: Mysql 8.0 XtraBackupMysqlbinlog 完全恢復 - 墨天輪 Mysql 8.0 XtraBackupMysqlbinlog 完全恢復[TOC]# 一、安裝mysql 8.0.19## 1.1https://www.modb.pro/db/509223MySQL 的全量備份、增量備份與 Binlog 時間點恢復_mysqlbinlog自動備份嗎-CSDN博客文章…

3. 軸指令(omron 機器自動化控制器)——>MC_SetPosition

機器自動化控制器——第三章 軸指令 11 MC_SetPosition變量?輸入變量?輸出變量?輸入輸出變量 功能說明?時序圖?重啟動運動指令?多重啟運動指令?異常 MC_SetPosition 將軸的指令當前位置和反饋當前位置變更為任意值。 指令名稱FB/FUN圖形表現ST表現MC_SetPosition當前位…

從 @SpringBootApplication 出發,深度剖析 Spring Boot 自動裝配原理

在 Spring Boot 的開發旅程中,SpringBootApplication 注解堪稱開啟便捷開發之門的鑰匙。它不僅是一個簡單的注解,更是理解 Spring Boot 自動裝配原理的重要入口。接下來,我們將以SpringBootApplication 為切入點,深入探究 Spring …

MySQL面試專題

1.什么是BufferPool? Buffer Pool基本概念 Buffer Pool:緩沖池,簡稱BP。其作用是用來緩存表數據與索引數據,減少磁盤IO操作,提升效率。 Buffer Pool由緩存數據頁(Page) 和 對緩存數據頁進行描述的控制塊 組成, 控制…

調用百度api實現語音識別(python)

該代碼實現了一個企業級的語音識別解決方案,通過調用百度語音識別API,實現實時錄音識別和對已有音頻語音識別功能。 百度智能云:請自行訪問百度智能云,開通免費的語音識別功能,獲取API_KEY和SECRET_KEY。操作按照百度流程即可,可免費申請。 首先,配置下百度API和描述下錯…

KRaft模式

目錄標題 Kraft模式**1. 什么是Kraft模式?****2. 為什么引入Kraft模式?****3. 核心優勢****4. 架構與工作原理****5. 部署與配置要點****6. 適用場景與最佳實踐****總結**KIP-833: Mark KRaft as Production Ready除了Kraft模式,Kafka還有以下…

單片機電路中常見的英文術語及縮寫

以下是單片機電路中常見的英文術語及縮寫的解釋及其作用說明,按功能分類整理,便于理解: 一、核心術語 MCU (Microcontroller Unit) ? 中文:微控制器單元 ? 作用:單片機的核心芯片,集成CPU、存儲器、外設接…

常見框架漏洞之一:Thinkphp5x

ThinkPHP是為了簡化企業級應?開發和敏捷WEB應?開發?誕?的,是?個快速、兼容?且簡單的輕量級國產PHP開發框架,誕?于2006年初,原名FCS,2007年元旦正式更名為 ThinkPHP,遵循Apache2開源協議發布,從Stru…

2025年優化算法:龍卷風優化算法(Tornado optimizer with Coriolis force,TOC)

龍卷風優化算法(Tornado optimizer with Coriolis force)是發表在中科院二區期刊“ARTIFICIAL INTELLIGENCE REVIEW”(IF:11.7)的2025年智能優化算法 01.引言 當自然界的狂暴之力,化身數字世界的智慧引擎&…

面試中如何回答性能優化的問題

性能問題和Bug不同,后者的分析和解決思路更清晰,很多時候從應用日志(文中的應用指分布式服務下的單個節點)即可直接找到問題根源,而性能問題,其排查思路更為復雜一些。 對應用進行性能優化,是一個系統性的工程,對工程師的技術廣度和技術深度都有所要求。一個簡單的應用…

CMake 函數和宏

CMake 函數 CMake 函數定義語法如下, 其中 name 為函數名, <arg1> 為參數名, <commands> 為函數體. 函數定義后, 可以通過 name 調用函數. 函數名允許字母數字下劃線, 不區分大小寫. function(name [<arg1> ...])<commands> endfunction()如下的樣例…

【QA】Qt有哪些迭代器模式的應用?

在 Qt/C 中&#xff0c;迭代器模式的設計主要分為 標準 C 風格 和 Qt 框架特有風格&#xff0c;以下結合代碼詳細說明兩種實現方式的關鍵設計及其應用場景&#xff1a; 一、Qt 框架中的迭代器模式設計 Qt 提供了兩種迭代器風格&#xff1a;Java 風格&#xff08;顯式迭代器&am…

Mysql表的簡單操作

&#x1f3dd;?專欄&#xff1a;Mysql_貓咪-9527的博客-CSDN博客 &#x1f305;主頁&#xff1a;貓咪-9527-CSDN博客 “欲窮千里目&#xff0c;更上一層樓。會當凌絕頂&#xff0c;一覽眾山小。” 目錄 3.1 創建表 3.2 查看表結構 3.3 修改表 1. 添加字段 2. 修改字段 3…

【云馨AI-大模型】自動化部署Dify 1.1.2,無需科學上網,Linux環境輕松實現,附Docker離線安裝等

Dify介紹 官網&#xff1a;https://dify.ai/zh生成式 AI 應用創新引擎開源的 LLM 應用開發平臺。提供從 Agent 構建到 AI workflow 編排、RAG 檢索、模型管理等能力&#xff0c;輕松構建和運營生成式 AI 原生應用。 Dify安裝腳本 目錄創建 mkdir -p /data/yunxinai &&a…