【機器學習深度學習】線性回歸

目錄

一、定義

二、舉例說明

三、?數學形式

四、?訓練過程(機器怎么學會這條線?)

五、在 PyTorch 中怎么實現線性回歸?

六、如果你學懂了線性回歸,你也能理解這些

七、綜合應用:線性回歸示例

7.1 執行代碼

7.2 運行效果

7.3 運行圖示效果

7.4 代碼解析

7.4.1?庫名解析

7.4.2 生成數據

7.4.3 定義模型

7.4.4 訓練設置

7.4.5 訓練循環

7.4.6 結果可視化



一、定義

線性回歸是用一條直線,來擬合數據中輸入和輸出之間的關系。

它是最簡單的一種監督學習模型,目標是學會從輸入 x預測輸出 y。

線性回歸就是用一條最合適的“直線”去擬合數據關系,是所有機器學習算法的“入門基礎”和“核心思想的起點”。


二、舉例說明

比如你有下面這些數據點(房屋面積 → 價格):

房屋面積 (㎡)房價 (萬)
50100
60120
70140
80160

你發現:

面積每增加 10 平方,價格多了 20 萬
→ 明顯是個線性關系:


三、?數學形式

最基本的一元線性回歸:

  • x:輸入特征(如面積)

  • y:目標輸出(如房價)

  • w:權重(斜率)

  • b:偏置(截距)

  • 模型要學會找到最合適的 w?和 b,使得預測值? 盡可能接近真實值 y


四、?訓練過程(機器怎么學會這條線?)

通過梯度下降

  1. 初始化 w、b(通常是隨機值)

  2. 預測:算出

  3. 計算損失 MSE

  4. 反向傳播(backward):計算損失對 w、b的梯度

  5. 更新參數:往損失下降的方向調整 w、b

  6. 重復上述步驟,直到 loss 越來越小,收斂為止


五、在 PyTorch 中怎么實現線性回歸?

model = nn.Linear(1, 1)  # 1 個輸入,1 個輸出

?

  • 自動幫你創建了可訓練的 weightbias

  • 使用 MSELoss() 做目標函數

  • 使用優化器(如 SGD)進行參數更新

最終訓練完后你得到的就是:
一個已經學會了你數據規律的函數:

它就可以用來對新樣本進行預測了


六、如果你學懂了線性回歸,你也能理解這些

模型關系與區別
邏輯回歸用線性回歸的結果接 softmax → 做分類任務
神經網絡多層線性回歸 + 激活函數
支持向量機(SVM)類似線性分類器,只是優化目標不同
RNN / LSTM / CNN都是在這個思想上發展出來的

七、綜合應用:線性回歸示例

7.1 執行代碼

import torch
import torch.nn as nn
import matplotlib.pyplot as plt
# ==============================
# 綜合應用:線性回歸
# ==============================
print("\n" + "=" * 50)
print("綜合應用: 線性回歸")
print("=" * 50)# 生成數據
torch.manual_seed(42)   #種子數:42——生成重復的隨機數據
X = torch.linspace(0, 10, 100).reshape(-1, 1)    #在0-9之間,定義100個數據,每個數據一個特征
print(X.shape)
true_weights = 2.5    #W:權重:2.5
true_bias = 1.0       #b:偏置項:1.0
y = true_weights * X + true_bias + torch.randn(X.size()) * 1.5  #模擬真實數據# 定義模型
class LinearRegression(nn.Module):def __init__(self):super().__init__()self.linear = nn.Linear(1, 1)def forward(self, x):return self.linear(x)# 訓練設置
model = LinearRegression() #初始化實例
criterion = nn.MSELoss()   #定義損失函數,衡量預測和真實的差距
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)     #設置優化器,用來更新模型的參數
epochs = 1000    #訓練輪數:1000# 訓練循環
for epoch in range(epochs):optimizer.zero_grad()          #outputs = model(X)             #loss = criterion(outputs, y)   #loss.backward()                #optimizer.step()               #if (epoch + 1) % 20 == 0:print(f'Epoch [{epoch + 1}/{epochs}], Loss: {loss.item():.4f}')# 結果可視化
predicted = model(X).detach().numpy()
plt.scatter(X.numpy(), y.numpy(), label='Original data')
plt.plot(X.numpy(), predicted, 'r-', label='Fitted line')
plt.legend()
plt.title(f'Final weights: {model.linear.weight.item():.2f}, bias: {model.linear.bias.item():.2f}')
plt.show()

7.2 運行效果

==================================================
綜合應用: 線性回歸
==================================================
torch.Size([100, 1])
Epoch [20/1000], Loss: 2.7219
Epoch [40/1000], Loss: 2.6217
Epoch [60/1000], Loss: 2.5395
Epoch [80/1000], Loss: 2.4722
Epoch [100/1000], Loss: 2.4170
Epoch [120/1000], Loss: 2.3718
Epoch [140/1000], Loss: 2.3348
Epoch [160/1000], Loss: 2.3044
Epoch [180/1000], Loss: 2.2795
Epoch [200/1000], Loss: 2.2591
Epoch [220/1000], Loss: 2.2424
Epoch [240/1000], Loss: 2.2287
Epoch [260/1000], Loss: 2.2175
Epoch [280/1000], Loss: 2.2083
Epoch [300/1000], Loss: 2.2008
Epoch [320/1000], Loss: 2.1946
Epoch [340/1000], Loss: 2.1895
Epoch [360/1000], Loss: 2.1854
Epoch [380/1000], Loss: 2.1820
Epoch [400/1000], Loss: 2.1792
Epoch [420/1000], Loss: 2.1769
Epoch [440/1000], Loss: 2.1750
Epoch [460/1000], Loss: 2.1735
Epoch [480/1000], Loss: 2.1722
Epoch [500/1000], Loss: 2.1712
Epoch [520/1000], Loss: 2.1704
Epoch [540/1000], Loss: 2.1697
Epoch [560/1000], Loss: 2.1691
Epoch [580/1000], Loss: 2.1686
Epoch [600/1000], Loss: 2.1683
Epoch [620/1000], Loss: 2.1679
Epoch [640/1000], Loss: 2.1677
Epoch [660/1000], Loss: 2.1675
Epoch [680/1000], Loss: 2.1673
Epoch [700/1000], Loss: 2.1672
Epoch [720/1000], Loss: 2.1671
Epoch [740/1000], Loss: 2.1670
Epoch [760/1000], Loss: 2.1669
Epoch [820/1000], Loss: 2.1667
Epoch [840/1000], Loss: 2.1667
Epoch [860/1000], Loss: 2.1667
Epoch [880/1000], Loss: 2.1666
Epoch [900/1000], Loss: 2.1666
Epoch [920/1000], Loss: 2.1666
Epoch [940/1000], Loss: 2.1666
Epoch [960/1000], Loss: 2.1666
Epoch [980/1000], Loss: 2.1666
Epoch [1000/1000], Loss: 2.1666

7.3 運行圖示效果


7.4 代碼解析

7.4.1?庫名解析
import torch
import torch.nn as nn
import matplotlib.pyplot as plt

? 1. torch:PyTorch 的主庫

作用:提供張量運算、自動求導和深度學習模型構建能力。

在本代碼中,torch 的主要作用有:

  • torch.manual_seed(42):設置隨機種子,確保每次運行生成的隨機數(如噪聲)一致,方便調試和復現實驗結果。

  • torch.linspace(0, 10, 100):生成從 0 到 10 的 100 個等間距值,模擬自變量 XXX。

  • torch.randn(...):生成服從正態分布的隨機噪聲,加入到 yyy 中,模擬真實數據中的擾動。

  • X.size() / .reshape(-1, 1):控制張量形狀,確保符合模型輸入要求。

  • 所有模型定義、參數、損失計算、反向傳播 (loss.backward())、優化 (optimizer.step()) 都依賴于 torch 的自動求導與計算圖。


? 2. torch.nn:PyTorch 的神經網絡模塊

作用:構建和使用神經網絡模塊(如線性層、激活函數、損失函數等)。

在本代碼中:

  • nn.Module:是所有神經網絡模塊的基類。LinearRegression 類繼承自它,定義了一個簡單的線性模型。

  • nn.Linear(1, 1):定義一個具有一個輸入特征和一個輸出特征的線性層(即 y=wx+by = wx + by=wx+b)。

  • nn.MSELoss():均方誤差損失函數,用于衡量預測值與真實值的差異。


? 3. matplotlib.pyplot:繪圖庫

作用:用于繪制圖形、數據可視化。

在本代碼中:

  • plt.scatter(...):繪制原始數據點(散點圖),表示樣本 (X, y)。

  • plt.plot(...):繪制模型擬合出的線性曲線(紅線),表示預測值。

  • plt.legend()plt.title(...):添加圖例和標題,展示最終模型參數。

  • plt.show():展示圖像窗口。


總結表:

依賴庫作用簡述
torch張量操作、反向傳播、優化等底層計算支持
torch.nn神經網絡層、損失函數的模塊化構建工具
matplotlib.pyplot數據可視化(繪圖、展示模型預測結果)

這些依賴共同構成了完整的“模型構建 → 訓練 → 可視化”流程。你也可以理解為:
📦 torch 是“數據和訓練引擎”、📦 torch.nn 是“模型建造工具”、📊 matplotlib.pyplot 是“成果展示板”。


7.4.2 生成數據
# 生成數據
torch.manual_seed(42)
X = torch.linspace(0, 10, 100).reshape(-1, 1)
print(X.shape)
true_weights = 2.5
true_bias = 1.0
y = true_weights * X + true_bias + torch.randn(X.size()) * 1.5

?這段代碼的作用是:生成用于線性回歸的模擬數據集

🔹torch.manual_seed(42)

設置隨機數生成器的種子為 42,使得每次運行代碼時,生成的隨機數都是可復現的,即 torch.randn() 生成的噪聲始終一樣。讓隨機過程變得“確定”下來,這樣你的實驗結果每次都一樣,方便復現和調試。

🤔它的作用是:

固定隨機數生成器的初始狀態,這樣每次你運行程序時,生成的“隨機數”都是完全一樣的

這樣你就能保證結果可重復、可調試

🤔 為什么要用這個?

  • 做實驗、調試時要結果一致:如果你加入了隨機噪聲或模型參數是隨機初始化的,每次運行結果都不同,會很難調試。

  • 寫教學/研究/博客代碼時需要復現:別人運行你代碼時希望結果一樣。

  • 可對比性:你換了一種訓練方式,想驗證哪個更好——如果噪聲不同,是沒法公平比較的。


🔹X = torch.linspace(0, 10, 100).reshape(-1, 1)

它的作用是:

生成一個形狀為 [100, 1] 的輸入特征張量 X,范圍從 0 到 10,共 100 個樣本點。

拆解說明:

▲torch.linspace(0, 10, 100)

在區間 [0, 10] 上生成 100 個等間距的數,表示自變量(輸入特征)。

tensor([0.0000, 0.1010, 0.2020, ..., 9.8990, 10.0000]) #100個點

▲.reshape(-1, 1)

? 一句話解釋

把張量變成 2 維,其中:

  • -1 表示“這一維度讓我自動算”,

  • 1 表示“我想要 1 列”。

? 用 .reshape(-1, 1),含義就是:
x.reshape(?, 1)  # 問號表示“PyTorch 你幫我算出來”

PyTorch 會看:原來你有 100 個數,你要求 1 列,那它自動算出你應該有 100 行。

所以變成:

x.shape → [100, 1]
  • -1 表示“自動推斷有多少行”,在這里 PyTorch 會計算出是 100 行;

  • 1 表示每行 1 個元素 → 每個樣本有 1 個特征

最終結果就變成了二維張量:

[[0.0000],[0.1010],[0.2020],...[9.8990],[10.0000]
]   ← shape: [100, 1]

? 為什么 -1 就是“自動算”?

PyTorch、Numpy 等都規定:

在 reshape 里,如果某一維寫 -1,表示“我不想算這個維度,你幫我根據總元素數自動推斷”。

比如下面這些例子:

a = torch.arange(12)   # shape: (12,)a.reshape(3, 4)   # → (3, 4)
a.reshape(-1, 4)  # → (3, 4)  ← -1 讓 PyTorch 自己算出是 3 行
a.reshape(2, -1)  # → (2, 6)  ← -1 被自動推成 6 列

🚩 錯誤示例(多于一個 -1 會報錯):

a.reshape(-1, -1)  # ? 報錯:只能有一個 -1

這是形狀變換的關鍵:

  • 原來 linspace 生成的是 一維張量,形狀是 (100,)

注意:這里(100,)表示的是長度為100,不是100行

  • 但我們希望它變成 二維張量,形狀是 (100, 1),表示“100 個樣本,每個樣本有 1 個特征

📌 總結公式

你可以記住這句話:

.reshape(-1, n) 就是:
“把這個張量 reshape 成 n 列,行數我不想算,PyTorch 你自動算就行。”

形狀含義適合線性回歸嗎?
[100, 1]?? 有 100 個樣本,每個樣本 1 個特征? 是
[1, 100]? 有 1 個樣本,擁有 100 個特征? 否
[100]? 一維張量,不明確樣本維度? 否(模型報錯)
部分代碼含義
torch.linspace(0, 10, 100)生成 0~10 之間的 100 個點
.reshape(-1, 1)把一維的 [100] 變成二維 [100, 1]
最終的 X是一個 100 行 1 列的輸入張量

🔹true_weights = 2.5

這是你自己設定的**“真實模型的權重”**,代表線性函數的斜率:

y = 2.5 * x + 1.0 + 噪聲

🔹true_bias = 1.0

表示真實模型的偏置項(截距)。


🔹y = true_weights * X + true_bias + torch.randn(X.size()) * 1.5

🧠主要作用:

生成“模擬的真實數據”(也叫“合成數據”),專門用來做線性回歸訓練的。

這里做了一個WX+b的計算,但是加入了【隨機張量*1.5】,用于模擬噪聲
使其能夠更加貼合真實環境中的數據。

🧠 拆解說明:

這是生成帶有噪聲的目標值 y,用于擬合:

  1. true_weights * X + true_bias:構造一個理想的線性關系 y=2.5x+1.0y = 2.5x + 1.0y=2.5x+1.0

  2. torch.randn(X.size()):生成一個與 XXX 形狀相同的隨機張量,服從標準正態分布 N(0,1)

  3. * 1.5:將噪聲的標準差放大為 1.5,模擬更復雜的實際場景(讓數據點不是完全線性的)

結果是:

🧠 總結一下這一塊的直觀含義:

手動生成了一批看起來像“真實世界采集”的數據:

  • X 是輸入變量,從 0 到 10 均勻分布;

  • y 是輸出變量,大致符合 y = 2.5x + 1 的關系,但加入了噪聲,使得它不是完美的直線;

  • 這就是后面用來訓練模型擬合出的“模擬數據”


7.4.3 定義模型
# 定義模型
class LinearRegression(nn.Module):def __init__(self):super().__init__()self.linear = nn.Linear(1, 1)def forward(self, x):return self.linear(x)

這段代碼定義了一個最簡單的線性回歸模型,輸入 1 個數,輸出 1 個數,核心是:
y = w * x + b,這個公式被封裝在 nn.Linear(1, 1) 中。

定義了一個線性回歸模型類,名字叫 LinearRegression,本質就是實現了:

也就是一個帶權重和偏置的線性變換。

🔹class LinearRegression(nn.Module):

定義一個新的類,名字叫 LinearRegression,這個類繼承自 PyTorch 提供的 nn.Module

nn.Module 是 PyTorch 中所有模型的基類。你自定義的神經網絡都應該繼承它。


🔹super().__init__()

這一行是固定寫法,它調用父類 nn.Module 的構造方法。

🧠 沒有它,PyTorch 的模型結構和參數注冊系統就沒法正常工作。


🔹self.linear = nn.Linear(1, 1)

這一行很關鍵!

它定義了一個線性層,輸入和輸出都是 1 個特征,也就是:

y = w * x + b
  • in_features = 1:說明你每個樣本的輸入只有 1 個數(x)

  • out_features = 1:說明模型輸出也只有 1 個數(預測 y)

這個層會自動幫你創建兩個參數:

參數含義
weight線性函數的斜率 w
bias偏置項 b

🔹def forward(self, x):

這是 PyTorch 模型的核心函數,定義了模型的“前向傳播”邏輯。

也就是說,當你 model(x) 的時候,實際調用的就是這個函數。


🔹return self.linear(x)

輸入 x 會通過 self.linear 這個線性層:

PyTorch 會自動處理矩陣乘法、廣播等操作,并計算輸出。


🎯 整體行為總結:

定義了一個“線性變換模型”,它會:

  • 接收一個輸入 x(形狀是 [batch_size, 1]

  • 自動用參數 w和 b?計算出預測結果 y=wx+b

  • 參與訓練(PyTorch 自動記錄梯度和更新參數)


7.4.4 訓練設置
# 訓練設置
model = LinearRegression()
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
epochs = 1000

這部分是模型訓練的準備工作

🔹model = LinearRegression()

創建定義的線性回歸模型實例

  • 現在 model 就包含了一個線性層 nn.Linear(1, 1),其中的權重 w 和偏置 b隨機初始化 的。

  • 它準備好接收輸入并產生預測值 y_hat = model(x)


🔹criterion = nn.MSELoss()

這是設置損失函數

  • 它衡量的是:

    預測值 y_hat 與真實值 y 之間的平均平方差

  • 在回歸問題中(輸出是連續數值),MSE 是最常用的損失函數。

  • MSELoss = Mean Squared Error Loss,中文叫均方誤差損失

  • 公式是:


🔹optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

這行的作用是:

設置一個優化器,用來更新模型的參數(權重和偏置),以最小化損失函數。

解釋:

  • SGD = 隨機梯度下降(Stochastic Gradient Descent),一種常見的優化算法。

  • model.parameters():把模型的所有參數(權重 w、偏置 b)都傳進去,讓優化器負責更新它們。

  • lr=0.01:學習率,控制每一步更新的“幅度”。

📌 如果學習率太小,訓練會很慢;太大,可能震蕩、甚至不收斂。


🔹epochs = 1000

設置訓練的總輪數(epoch):

  • 一個 epoch = 用全部訓練數據訓練一次模型

  • 你讓模型訓練 1000 次,反復調整參數來逼近真實值


? 總結表格:

代碼含義
model = LinearRegression()創建模型實例,準備接收輸入
criterion = nn.MSELoss()定義損失函數,衡量預測和真實的差距
optimizer = torch.optim.SGD(...)設置優化器,用來更新模型的參數
epochs = 1000訓練輪數,表示訓練模型多少遍

?💡 小結一句話:

這四行代碼是在為“模型訓練”做好準備工作:模型、評判標準(損失)、優化方法和訓練時間長度。


7.4.5 訓練循環
# 訓練循環
for epoch in range(epochs):optimizer.zero_grad()outputs = model(X)loss = criterion(outputs, y)loss.backward()optimizer.step()if (epoch + 1) % 20 == 0:print(f'Epoch [{epoch + 1}/{epochs}], Loss: {loss.item():.4f}')

? 一句話總結

這段代碼通過 “預測 → 計算損失 → 反向傳播 → 更新參數” 的過程,反復 1000 次,讓模型學會擬合數據點 X→y,找出最合適的權重和偏置。

這部分代碼是訓練的核心循環,也叫“訓練主干”,負責讓模型學會從數據中提取規律。

🔹for epoch in range(epochs):

  • 這是訓練的主循環,總共會執行 epochs 次(這里是 1000 次)。

  • 每一次循環,模型都會用全部的訓練數據 X,預測一遍,然后更新參數。


🔹optimizer.zero_grad()

  • 每次迭代開始前,清空舊的梯度信息

  • 因為 PyTorch 會自動累積梯度,所以每次計算新梯度前要先清空。


🔹outputs = model(X)

  • 把輸入數據 X 喂進模型,得到預測輸出 outputs,也就是?

  • 這一步會自動調用你模型里的 forward() 函數:

def forward(self, x):return self.linear(x)

🔹loss = criterion(outputs, y)

  • 比較模型預測值 outputs 和真實值 y,計算損失值。

  • criterion = nn.MSELoss() 是均方誤差,越小表示預測越準確。


🔹loss.backward()

  • 反向傳播:根據損失 loss 自動計算模型中所有參數的梯度(導數)。

  • PyTorch 會自動為你完成鏈式法則的求導。


🔹optimizer.step()

  • 使用前面算出來的梯度,更新模型參數(權重 w 和偏置 b)。

  • 優化器根據學習率和梯度來調整參數,讓損失變得更小。


🔹 if (epoch + 1) % 20 == 0:

  • 每訓練 20 次,打印一次日志。

  • loss.item() 把一個標量 tensor 取出數值,用于打印。

結果例子:

Epoch [20/1000], Loss: 1.2234
Epoch [40/1000], Loss: 0.8912
...

?📊 圖示訓練流程:

? ? ? ? ┌────────────┐
? ? ? ? │ ? ?X? ? ? ? ? ? ? ? ? ? ? ? ?│ ?← 輸入
? ? ? ? └────┬───────┘
? ? ? ? ? ? ? ? ? ? ?↓
? ? ? ? ┌────────────┐
? ? ? ? │ ?model(X)? ? ? ? ? ? ? ?│ ?← 前向傳播:預測 outputs
? ? ? ? └────┬───────┘
? ? ? ? ? ? ? ? ? ? ?↓
? ? ? ? ┌────────────┐
? ? ? ? │ loss = MSE? ? ? ? ? ? │ ?← 損失函數:outputs vs y
? ? ? ? └────┬───────┘
? ? ? ? ? ? ? ? ? ? ?↓
? ? ? ? ┌────────────┐
? ? ? ? │ ?backward? ? ? ? ? ? ? │ ?← 自動求導:loss.backward()
? ? ? ? └────┬───────┘
? ? ? ? ? ? ? ? ? ? ?↓
? ? ? ? ┌────────────┐
? ? ? ? │ optimizer? ? ? ? ? ? ? ? │ ?← 參數更新:optimizer.step()
? ? ? ? └────────────┘
?


7.4.6 結果可視化
# 可視化結果
predicted = model(X).detach().numpy()
plt.scatter(X.numpy(), y.numpy(), label='Original data')
plt.plot(X.numpy(), predicted, 'r-', label='Fitted line')
plt.legend()
plt.title(f'Final weights: {model.linear.weight.item():.2f}, bias: {model.linear.bias.item():.2f}')
plt.show()

這段代碼是整個線性回歸項目的最后一步:結果可視化,幫助你直觀地看到模型學得怎么樣。例如:

🔹predicted = model(X).detach().numpy()

含義:讓模型生成預測結果,并把它轉換成 NumPy 格式,方便畫圖。

  • model(X):把輸入 X 送入你訓練好的模型,得出預測值(也就是模型估計的 y_hat

  • .detach():從計算圖中分離出來,不需要梯度,只用于畫圖。

  • .numpy():把結果變成 NumPy 數組。

  • 得到的是一個形狀也為 [100, 1] 的數組,對應每個 x 值的預測 y


🔹plt.scatter(X.numpy(), y.numpy(), label='Original data')

畫出原始訓練數據點(帶噪聲的),用“散點圖”表示。

X.numpy():把 PyTorch 的張量轉成 NumPy 數組,才能用 matplotlib 來畫圖;

y.numpy():同樣是把 y 轉成 NumPy 數組,方便畫圖;

X.numpy(), y.numpy() 是將你的輸入數據和真實標簽數據從 PyTorch 的 Tensor 轉成 NumPy 數組,以便用 matplotlib.pyplot 畫圖;

  • 橫坐標是 X,縱坐標是 y(真實的目標值)

  • 這是你用來訓練模型的數據點

  • 它們并不完美在一條直線上,是故意加了噪聲的


🔹plt.plot(X.numpy(), predicted, 'r-', label='Fitted line')

用 matplotlib 畫一條“紅色直線”,表示模型預測出的結果,即模型學到的線性函數。

畫出模型學習出來的那條“最佳擬合線”

  • 橫坐標:輸入 X

  • 縱坐標:模型預測值 predicted

  • 'r-' 表示紅色(red)實線

  • 這是你訓練了這么久之后,模型認為最合適的那條線


🔹plt.legend()

顯示圖例,對應你前面加的 label='...' 標簽:

  • 原始數據:藍色點

  • 擬合線:紅色線


🔹plt.title(...)

給圖加標題:顯示模型最終學到的參數(權重和偏置):

f'Final weights: {model.linear.weight.item():.2f}, bias: {model.linear.bias.item():.2f}'

意思是:

最終權重:比如 2.49,最終偏置:比如 1.02

這能幫你驗證:

  • 模型是不是成功學到了你最初設置的 2.51.0


🔹plt.show()

正式顯示整個圖像窗口。

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

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

相關文章

如何在 Manjaro Linux 上安裝 .NET Core

.NET 是一個開源的開發框架平臺,可在所有流行的操作系統(如 Windows、Linux 和 macOS)上免費使用和安裝。它是跨平臺的,是主要由微軟員工在 .NET 基金會下開發的專有 .NET Framework 的繼承者。.NET 是一個統一的平臺,用于開發各種操作系統上的軟件,如 Web、移動、桌面應…

Mysql解惑(一)

使用 or 可能不走索引 使用 union替代 使用in,可能不走索引 如果優化: 臨時表強制索引exists代替

基于機器學習的側信道分析(MLSCA)Python實現(帶測試)

一、MLSCA原理介紹 基于機器學習的側信道分析(MLSCA)是一種結合傳統側信道分析技術與現代機器學習算法的密碼分析方法。該方法通過分析密碼設備運行時的物理泄漏信息(如功耗、電磁輻射等),利用機器學習模型建立泄漏數據與密鑰信息之間的關聯模型,從而實…

【LLM】位置編碼

【LLM】位置編碼 1 絕對位置嵌入為什么用 1000 0 2 t d 10000^{\frac{2t}{d}} 10000d2t?? 2 相對位置嵌入2.1 Shaw等人的方法(2018)2.2 Dai等人的方法(2019)2.3 Raffel 等人的方法(2020)2.4 He 等人的方法…

Java 根據分組key構建合并數據集

文章目錄 前言背景總結 前言 請各大網友尊重本人原創知識分享,謹記本人博客:南國以南i、 提示:以下是本篇文章正文內容,下面案例可供參考 背景 Java 需要返回一組數據供前端展示,獲取到的數據格式如下: …

Linux平臺Oracle開機自啟動設置

網上和官方文檔已經有不少介紹如何設置開機啟動Oracle實例的文章(Linux平臺),不過以sysvinit和service這種方式居多。最近遇到了UAT環境的服務器打補丁后需要重啟服務器的情況, 需要DBA去手工啟動Oracle實例的情形,和同事討論,決定…

商品中心—商品B端搜索系統的實現文檔(二)

8.步驟四:基于索引實現搜索功能 (1)基于suggest索引的自動補全實現 實現自動補全的代碼比較簡單,其原理是:把搜索詞匯和倒排索引里的所有前綴匹配的詞條進行score比較,然后把分數最高的那些返回,其中會涉及到suggest索…

Codeforces Round 1027 (Div. 3)

A. Square Year 題目大意 給你一個四個字符的字符串,代表一個數字s 問是否存在a,b兩個數字,使得 ( a b ) 2 s (ab)^2s (ab)2s 思路 如果s是奇數或不能被開根號一定不行 設sq為s開根號后的結果 將sq一分為2,考慮sq/2有沒有余數的情況 //…

時序數據庫IoTDB的架構、安裝啟動方法與數據模式總結

一、IoTDB的架構 IoTDB的架構主要分為三個部分: ?時序文件(Tsfile)?: 專為時序數據設計的文件存儲格式。支持高效的壓縮和查詢性能。可獨立使用,并可通過TsFileSync工具同步至HDFS進行大數據處理。 ?數據庫引擎?…

ArrayList和LinkedList詳解

在Java后端開發中,集合框架是我們日常編程不可或缺的工具,它為數據存儲和操作提供了豐富的實現方式。作為Java集合框架中最常用的兩種List實現,ArrayList和LinkedList各自具有獨特的特性和適用場景。 1. 基本概念 1.1 ArrayList的定義與特性…

警惕微軟Entra ID風險:訪客賬戶存在隱蔽的權限提升策略

訪客用戶訂閱權限漏洞解析 微軟Entra ID的訂閱管理存在訪問控制缺陷,允許訪客用戶在受邀租戶中創建和轉移訂閱,同時保留對這些訂閱的完全所有權。訪客用戶只需具備在源租戶創建訂閱的權限,以及受邀成為外部租戶訪客的身份即可實施此操作。這…

EEG分類攻略2-Welch 周期圖

在EEG信號處理的上下文中,使用Welch方法來估算信號的功率譜密度(Power Spectral Density, PSD)是一種常見的做法。你的代碼片段是利用**scipy.signal.welch**函數來進行功率譜密度估算,并且涉及到一些關鍵的參數和步驟。讓我們逐步…

開疆智能CCLinkIE轉ModbusTCP網關連接脈沖計數器配置案例

本案例是三菱PLC通過CCLinkIE轉ModbusTCP網關連接脈沖計數器的配置案例,具體配置如下。 配置過程: 首先設置從站通訊參數 主要設置IP地址,工作模式以及端口號(Modbus默認502) 找到通訊點表,找到需要讀寫的…

gRPC 使用(python 版本)

.proto 文件 .proto 文件 是 gRPC 和 Protocol Buffers 的接口定義文件,它描述了: 要傳遞什么數據(也就是消息體 message)。要暴露什么接口(也就是服務 service 和它們的 方法)。 也就是一份規范文件&am…

VMware安裝

勾選【增強型鍵盤驅動程序】 #后期虛擬機用鼠標鍵盤比較好用 VMware創建主機Windows2 選擇類型配置【自定義】 安裝客戶機操作系統【稍后安裝操作系統】 客戶機操作系統【Microsoft Windows】,版本選Windows最高版本 【固件類型】默認UEFI 【處理器配置】選1個處理…

【沉浸式解決問題】微服務子模塊引入公共模塊的依賴后無法bean未注入

目錄 一、問題描述二、場景還原三、原因分析四、解決方案五、拓展知識參考文獻 一、問題描述 在微服務項目中的公共模塊進行了Mybatis Plus配置,創建了配置類并添加了Configuration注解,其他模塊引入該模塊后不生效 我這里是在Mybatis Plus公共模塊中注…

SQL進階:CASE表達式

目錄 1、用一條SQL語句進行不同條件的統計 建表語句(MySQL8): 錄入數據: *按性別統計SQL 輸出結果(行列轉換) 2、在UPDATE語句里進行條件分支 建表語句(MySQL8):…

哪四款AI工具讓3D人物手辦制作如此簡單?

在當今數字化時代,AI技術的飛速發展為我們的生活帶來了諸多便利和驚喜。其中,AI生成3D人物手辦工具的出現,讓我們能夠輕松地將自己的創意和想象轉化為實體手辦,滿足了眾多手辦愛好者的個性化需求。今天,我將為大家推薦…

Docker高級管理--Dockerfile鏡像制作

目錄 一:Docker 鏡像管理 1:Docker 鏡像結構 2:Dockerfile介紹 二:Dockerfile 語法基礎 1:基礎指令 2:環境設置指令 3:文件操作指令 4:執行命令指令 5:網絡和暴露端口指令 6.容器掛載指令 三:dockerfile案例 1.構建nginx容器 一:Docker 鏡像管理 Docker…

數字時代的“靈魂”之爭:虛擬人形象的著作權困局與破局之道

首席數據官高鵬律師數字經濟團隊創作,AI輔助。 一、虛擬人的“數字生命”:一場關于“靈魂”的商業博弈 當一個虛擬偶像的“眼神”被復刻成千萬個相似的數字面孔,當一段虛擬主播的“聲音”被拆解為可交易的數據碎片——我們正在見證一個“數…