嗨,Stackoverflow 社區,
我有使用 shell 腳本的經驗,但這是我第一次參與高級 Python 語言代碼。在我嘗試學習基于機器學習的代碼的地方,有人可以幫忙處理以下代碼片段嗎?
(e, x), y = dyhat = atom_count @ w bbaseline_val_loss = [0.0 for _ in range(epochs)]
我正在尋找上述三行的口頭解釋,因為我從未在 shell 腳本中看到過這些語法。我正在學習的代碼是位于https://dmol.pub/applied/QM9.html的一本書的一部分, 謝謝。
uj5u.com熱心網友回復:
(1) (e, x), y = d
您在這里所做的基本上是將變數中的值解包d到元組(e, x)和變數中y。這僅d在與左側格式相同時才有效。
例如,假設d = ((3, 3), 4)。然后:
d = ((3, 3), 4)
(e, x), y = ((3, 3), 4)
print(e) # prints 3
print(x) # prints 3
print(y) # prints 4
更簡單的例子是:
a, b = 2, 3
print(a) # prints 2
print(b) # prints 3
(x, y, z) = (10, 20, 30)
print(x) # prints 10
print(y) # prints 20
print(z) # prints 30
唯一的區別是在您的示例中您使用的是元組,因此您需要正確解包所有值。
(2) yhat = atom_count @ w b
所述@算子是用于矩陣乘法操作,在Python 3.5添加。
在這里,您實際上是在宣告一個變數yhat,該變數等于矩陣atom_count和的矩陣乘法w b。例如:
import numpy as np
A = np.array([
[1, 2],
[3, 4]
])
B = np.array([
[4, 5],
[6, 7]
])
print(A @ B) # prints [[19 22]
# [43 50]]
(3) baseline_val_loss = [0.0 for _ in range(epochs)]
這稱為串列理解。這是一種初始化串列而不是撰寫冗長for回圈的方法。在這里,您正在初始化一個baseline_val_loss以epochs零數量呼叫的串列。
如果您有epochs = 10,那么您將擁有一個包含 10 個零的 Python 串列。該range函式創建一個從 0 到 的串列epochs - 1。您可以使用_as 變數進行迭代,因為您根本不關心當前回圈值;你不會用它做任何事情。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/310929.html
上一篇:提取包含數字的句子
