diff --git a/code/nndl/index.html b/code/nndl/index.html index 44872e7..1393a92 100644 --- a/code/nndl/index.html +++ b/code/nndl/index.html @@ -1585,7 +1585,7 @@
一些关于《神经网络与深度学习》的笔记
书中对整本书的结构如下,当不知道在学什么的时候,可以看一下这个图 @@ -1656,7 +1656,7 @@
import numpy as np
+n = 500
+m = 5
+w = np.array([[3,2,6,1,7]]).T
+b = 5
+print('shape of w:',w.shape)
+np.random.seed(42)
+x = np.random.rand(m, n)
+x_aug = np.pad(x, ((0, 1), (0, 0)), 'constant', constant_values=1)
+# print(x_aug)
+w_aug = np.pad(w, ((0, 1), (0, 0)), 'constant', constant_values=b)
+y = np.dot(w_aug.T,x_aug)
+print(y.shape)
+# print(augmented_matrix)
+# 添加高斯噪声
+mu, sigma = 0, 1 # 均值和标准差
+noise = np.random.normal(mu, sigma, y.shape)
+print(noise.shape)
+y_noisy = y + noise
+from sklearn.model_selection import train_test_split
+
+# 转置 x_aug 和 y_noisy 以进行打乱和分割
+x_aug = x_aug.T
+y_noisy = y_noisy.T
+
+# 将数据打乱并分成训练集和测试集
+x_train, x_test, y_train, y_test = train_test_split(x_aug, y_noisy, test_size=0.2, random_state=42)
+
+# 输出结果
+print("训练集 X 的形状:", x_train[:,:-1].shape)
+print("测试集 X 的形状:", x_test.shape)
+print("训练集 Y 的形状:", y_train.shape)
+print("测试集 Y 的形状:", y_test.shape)
+
# 线性模型函数
+def line_fun(x, w, b):
+ return np.dot(w.T, x)+b
+
+
+# 设定一个平方损失函数的梯度优化
+def gradient_optimization(x, y, w, b):
+ y_pre = line_fun(x, w, b)
+ grad_w = -(y - y_pre) * x
+ grad_b = -(y - y_pre)
+ # print(f"grad_w {grad_w.shape}, grad_b {grad_b.shape}")
+ return grad_w, grad_b
+# 损失函数
+def loss_function(x, y, k, b):
+ y_pre = line_fun(x, k, b)
+ return np.mean((y - y_pre) ** 2)
+
# 设定学习变量w和b的初始值
+w = np.ones((5, 1)) # 初始权重向量,维度为5*1
+b = 0.0
+learning_rate = 0.001
+decay_rate = 0.5
+
+tolerance = 1e-6
+max_epochs = 1000
+min_improvement = 1e-6
+patience = 10
+
+# 训练过程
+previous_loss = float('inf')
+improvement_streak = 0
+
+# 训练集循环
+for i in range(max_epochs):
+ learning_rate = 0.01 / (1 + decay_rate * i)
+ current_loss = 0
+ for n in range(x_train.shape[0]):
+ x_n = x_train[n, :-1].reshape(5,1) # 输入特征向量
+ y_n = y_train[n] # 目标值
+ grad_w, grad_b = gradient_optimization(x_n, y_n, w, b)
+ # print(f"grad_w {grad_w.T}, grad_b {grad_b}")
+ w = w - learning_rate * grad_w
+ b = b - learning_rate * grad_b
+ current_loss += loss_function(x_n, y_n, w, b)
+
+ current_loss /= x_train.shape[0]
+ if abs(previous_loss - current_loss) < min_improvement:
+ improvement_streak += 1
+ else:
+ improvement_streak = 0
+
+ if improvement_streak >= patience:
+ print(f"Training stopped after {i} epochs due to no significant improvement.")
+ break
+
+ previous_loss = current_loss
+
+print(f"Final values: w={w.T},\n b={b}, loss={previous_loss}")
+
import numpy as np
+from sklearn.model_selection import train_test_split
+
+n = 500
+m = 5
+w = np.array([[3,2,6,1,7]]).T
+b = 5
+np.random.seed(42)
+x = np.random.rand(m, n)
+x_aug = np.pad(x, ((0, 1), (0, 0)), 'constant', constant_values=1)
+w_aug = np.pad(w, ((0, 1), (0, 0)), 'constant', constant_values=b)
+y = np.dot(w_aug.T,x_aug)
+
+# 添加高斯噪声
+mu, sigma = 0, 1 # 均值和标准差
+noise = np.random.normal(mu, sigma, y.shape)
+y_noisy = y + noise
+
+
+# 转置 x_aug 和 y_noisy 以进行打乱和分割
+x_aug = x_aug.T
+y_noisy = y_noisy.T
+
+# 将数据打乱并分成训练集和测试集
+x_train, x_test, y_train, y_test = train_test_split(x_aug, y_noisy, test_size=0.2, random_state=42)
+
+# 输出结果
+print("训练集 X 的形状:", x_train[:,:-1].shape)
+print("测试集 X 的形状:", x_test.shape)
+print("训练集 Y 的形状:", y_train.shape)
+print("测试集 Y 的形状:", y_test.shape)
+
def inverse_matrix(matrix):
+ try:
+ # 判断矩阵是否可逆
+ if np.linalg.det(matrix) == 0:
+ return None, "The matrix is not invertible"
+ else:
+ # 计算矩阵的逆
+ inv_matrix = np.linalg.inv(matrix)
+ return inv_matrix
+ except np.linalg.LinAlgError as e:
+ return None, f"An error occurred: {str(e)}"
+
+# 优化算法:
+def optimizer_RLS(X, y, model, reg_lambda=0.001):
+ x_mean_T = np.mean(X, axis=0).T
+ y_mean = np.mean(y)
+ x_sub = np.subtract(X,x_mean_T)
+ # 计算w_star的第一项
+ temp1 = inverse_matrix(np.dot(x_sub.T,x_sub)+reg_lambda*np.eye(x_sub.shape[1]))
+ # 计算w_star的第二项
+ temp2 = np.dot(x_sub.T,(y-y_mean))
+ w_star = np.dot(temp1,temp2)
+ b_star = y_mean - np.dot(x_mean_T, w_star)
+
+ model.params['w'] = w_star
+ model.params['b'] = b_star
+
+model = Linear(5, 1)
+optimizer_RLS(x_train[:,:-1], y_train, model)
+print("w_pred:",model.params['w'], "b_pred: ", model.params['b']) # print model parameters
+
\u4f60\u53ef\u80fd\u611f\u5174\u8da3\u7684
\u4e00\u4e9b\u6709\u7528\u7684\u6587\u7ae0\uff08\u5b58\u7591\uff09
\u53bb\u770b\u770b
\u5173\u4e8e\u6211
\u6211\u662f\u4e2a...\u4eba\uff1f
\u4e86\u89e3\u4e00\u4e0b
\u6211\u7684\u8db3\u8ff9
\u4fdd\u6301\u5bf9\u8fd9\u4e2a\u4e16\u754c\u7684\u597d\u5947\u5fc3
\u65bd\u5de5\u4e2d
\u7ed9\u6211\u4e5f\u6574\u4e00\u4e2a
\u5982\u679c\u60a8\u8ba4\u540c\u6211\u7684\u535a\u5ba2\u8bbe\u8ba1\uff0c\u53ef\u4ee5\u4ece\u8fd9\u91cc\u5feb\u901f\u90e8\u7f72
\u5f00\u6574
\u8bb0\u5f55\u4e00\u4e9b\u6709\u7528\u7684MkDocs\u7684\u64b0\u5199\u8bed\u6cd5\uff0c\u6280\u5de7\u7b49\uff0c\u968f\u65f6\u67e5\u9605\u3002\u4e3b\u8981\u8bb0\u5f55\u4e00\u4e9b\u6211\u7528\u8fc7\u6216\u8005\u89c9\u5f97\u6709\u7528\u7684\u4e00\u4e9b\u8bed\u6cd5\uff0c\u6bd5\u7adf\u5e76\u4e0d\u662f\u8d8a\u591a\u8d8a\u597d\u3002
Info
\u672c\u6587\u6240\u8ff0\u8bed\u6cd5\u5e76\u4e0d\u662f\u57fa\u672cMarkDown\u8bed\u6cd5\uff0c\u5176\u4f9d\u8d56\u4e8e\u5404\u79cd\u6269\u5c55\uff0c\u8bf7\u5728\u52a0\u8f7d\u5bf9\u5e94\u6269\u5c55\u540e\u518d\u4f7f\u7528
","tags":["Test"]},{"location":"Doc_skill/#admonitions","title":"\u8b66\u544a(Admonitions)","text":"\u8be6\u60c5\u8bf7\u67e5\u9605\u539f\u6587\u3002
\u5f15\u7528
\u4eba\u751f\u4e09\u95ee\uff0c\u6211\u662f\u8c01\uff0c\u6211\u4ece\u54ea\u91cc\u6765\uff0c\u6211\u5230\u54ea\u91cc\u53bb\u3002 \u2014\u2014from \u6c11\u95f4
\u52a8\u624b\u505a\u4e00\u505a\u5427\u6bd4\u8d77\u201c\u4f8b\u5b50\u201d\u8fd9\u4e2a\u89e3\u91ca\uff0c\u6211\u89c9\u201c\u52a8\u624b\u505a\u4e00\u505a\u201d\u8fd9\u4e2a\u66f4\u9002\u5408\uff0c\u5c31\u50cf\u8bfe\u540e\u4e60\u9898\u4e00\u6837
\u63d0\u793a
\u539f\u6587 \u6709\u5f88\u591a\u53ef\u4ee5\u8868\u793a\u63d0\u793a\u7684\u683c\u5f0f\uff0c\u6682\u65f6\u89c9\u5f97\u8fd9\u4e2a\u66f4\u597d\u4e00\u70b9\u3002
","tags":["Test"]},{"location":"Doc_skill/#emojisbuttons","title":"\u8868\u60c5(Emojis)\u548c\u6309\u94ae(Buttons)","text":"[\u524d\u5f80\u641c\u7d22emoji :octicons-search-16:][tab_1]{ .md-button }\n\n[tab_1]: https://squidfunk.github.io/mkdocs-material/reference/icons-emojis/#search\n
\u524d\u5f80\u641c\u7d22emoji
","tags":["Test"]},{"location":"Doc_skill/#annotations","title":"\u6ce8\u91ca(Annotations)","text":"See more (1)
Annotations
\u4ee3\u7801\u4e2d\u7684Annotations:
theme:\n features:\n - content.code.annotate # (1)!\n
# (1)!
``` py title=\"bubble_sort.py\"\ndef bubble_sort(items):\n for i in range(len(items)):\n for j in range(len(items) - 1 - i):\n if items[j] > items[j + 1]:\n items[j], items[j + 1] = items[j + 1], items[j]\n```\n
","tags":["Test"]},{"location":"Doc_skill/#_2","title":"\u52a0\u884c\u53f7","text":"``` py linenums=\"1\"\ndef bubble_sort(items):\n for i in range(len(items)):\n for j in range(len(items) - 1 - i):\n if items[j] > items[j + 1]:\n items[j], items[j + 1] = items[j + 1], items[j]\n```\n
","tags":["Test"]},{"location":"Doc_skill/#_3","title":"\u884c\u9ad8\u4eae","text":"LinesLine ranges Code block with highlighted lines``` py hl_lines=\"2 3\"\ndef bubble_sort(items):\n for i in range(len(items)):\n for j in range(len(items) - 1 - i):\n if items[j] > items[j + 1]:\n items[j], items[j + 1] = items[j + 1], items[j]\n```\n
def bubble_sort(items):\n for i in range(len(items)):\n for j in range(len(items) - 1 - i):\n if items[j] > items[j + 1]:\n items[j], items[j + 1] = items[j + 1], items[j]\n
Code block with highlighted line range``` py hl_lines=\"3-5\"\ndef bubble_sort(items):\n for i in range(len(items)):\n for j in range(len(items) - 1 - i):\n if items[j] > items[j + 1]:\n items[j], items[j + 1] = items[j + 1], items[j]\n```\n
def bubble_sort(items):\n for i in range(len(items)):\n for j in range(len(items) - 1 - i):\n if items[j] > items[j + 1]:\n items[j], items[j + 1] = items[j + 1], items[j]\n
","tags":["Test"]},{"location":"Doc_skill/#iconapi","title":"\u83b7\u53d6\u7f51\u9875ICON\u7684api","text":"favicone
<!-- example -->\nhttps://favicone.com/google.com\n
https://0x3.com/ <!-- example -->\nhttps://0x3.com/icon?host=www.bilibili.com\n
","tags":["Test"]},{"location":"about/","title":"\u5173\u4e8e\u6211","text":"\u4eba\u751f\u4e09\u95ee
\u4eba\u751f\u4e09\u95ee\uff0c\u6211\u662f\u8c01\uff0c\u6211\u4ece\u54ea\u91cc\u6765\uff0c\u6211\u5230\u54ea\u91cc\u53bb\u3002 \u2014\u2014from \u6c11\u95f4
\u4eba\u751f\u4e09\u554f\uff0c\u4eba\u70ba\u4f55\u800c\u6d3b\uff1f\u61c9\u5982\u4f55\u751f\u6d3b\uff1f\u53c8\u61c9\u5982\u4f55\u624d\u80fd\u6d3b\u51fa\u61c9\u6d3b\u51fa\u7684\u751f\u547d\uff1f \u2014\u2014from \u53f0\u6e7e\u5927\u5b66 \u5b6b\u6548\u667a
\u6839\u636e\u516c\u5b89\u90e8\u4fbf\u6c11\u670d\u52a1\u63d0\u4f9b\u6570\u636e\uff0c\u622a\u6b622024/12/24\uff0c\u5171\u6709216\u540d\u7537\u6027\uff0c16\u540d\u5973\u6027\u4e0e\u6211\u540c\u540d\u3002
\u5176\u5b9e\u4ece\u672a\u7528\u8fc7Windows Vista\uff0c\u6700\u65e9\uff0c\u7528\u7684\u6700\u591a\u7684\u4e5f\u5c31\u662fXP\u3002
\u7231\u6298\u817e\uff0c\u6709\u65f6\u5019\u4f1a\u56e0\u4e3a\u4e00\u4e2a\u5c0f\u95ee\u9898\u800c\u7279\u610f\u53bb\u6298\u817e\uff0c \u6bd4\u5982\u6700\u8fd1\u5728\u7528latex\u5199\u6bd5\u4e1a\u8bba\u6587\uff0c\u56e0\u4e3a\u5accwindows\u5e73\u53f0\u7f16\u8bd1\u6162\uff0c \u7279\u610f\u7528\u8001\u7b14\u8bb0\u672c\u88c5\u4e86\u4e00\u4e2aUbuntu\uff0c\u610f\u5916\u7684\u597d\u7528\u3002
\u521b\u5efa\u8fd9\u4e2a\u7f51\u7ad9\u65f6\uff0c\u60f3\u505a\u4e00\u4e2a\u7ffb\u8f6c\u5934\u50cf\u7684\u6548\u679c\uff0c\u4f46\u56e0\u4e3a\u4e0d\u61c2html\uff0c \u67e5\u9605\u5404\u79cd\u8d44\u6599\uff08\u5305\u62ecGPT\uff09\uff0c\u6700\u7ec8\u5f04\u51fa\u6765\u4e86\u3002
Note
\u6211\u5f88\u559c\u6b22\u7f16\u7a0b\u3002\u6211\u7684\u6bcd\u4eb2\u662f\u4e00\u4f4d\u8ba1\u7b97\u673a\u8001\u5e08\uff0c\u53d7\u5230\u5979\u7684\u5f71\u54cd\uff0c \u51fa\u751f\uff08\u751a\u81f3\u662f\u51fa\u751f\u524d\uff09\u5c31\u63a5\u89e6\u8ba1\u7b97\u673a\uff0c\u521d\u4e2d\u63a5\u89e6\u7b2c\u4e00\u95e8\u8bed\u8a00\uff0cC\u8bed\u8a00\u3002 \u4f46\u6211\u5e76\u4e0d\u662f\u79d1\u73ed\u51fa\u8eab(1)\uff0c\u5b66\u7684\u6bd4\u8f83\u6742\u3002
\u6211\u6700\u65e9\u63a5\u89e6\u7684\u662fC\u8bed\u8a00\uff0c\u540e\u9762\u5d4c\u5165\u5f0f\u73a9\u7684\u591a\uff0c\u4e5f\u6210\u4e86\u6211\u6700\u719f\u6089\u7684\u8bed\u8a00\u3002 \u7531\u4e8e\u662fOPP\u7f16\u7a0b\uff0c \u6211\u5230\u73b0\u5728\u4e5f\u8fd8\u4fdd\u7559\u4ee5\u8fc7\u7a0b\u4e3a\u4e3b\u7ebf\u7684\u7f16\u7a0b\u4e60\u60ef\u3002
\u8fd9\u4e5f\u5bfc\u81f4\u6211\u6700\u521d\u65e0\u6cd5\u7406\u89e3OOP\u7f16\u7a0b\uff0c \u62bd\u8c61\u7a0b\u5ea6\u8fc7\u9ad8\u5bfc\u81f4\u7684\u9ed1\u76d2\u6548\u5e94\uff0c \u5404\u79cd\u4f9d\u8d56\u5d4c\u5957\uff0c\u8ba9\u6211\u5f88\u6050\u614c\u3002
\u4f46\u6bd5\u7adf\u662f\u65f6\u4ee3\u7684\u53d1\u5c55\uff0c\u4f5c\u4e3a\u7a0b\u5e8f\u5458\u600e\u4e48\u80fd\u4e0d\u8ddf\u7d27\u65f6\u4ee3\u7684\u811a\u6b65\u5462
DIY\uff0c\u5373Do It Yourself\uff0c\u81ea\u5df1\u52a8\u624b\uff0c\u4e30\u8863\u8db3\u98df\u3002
\u6211\u662f\u5b9e\u8df5\u6d3e\uff0c\u601d\u8003\u7406\u8bba\u82b1\u8d39\u6211\u66f4\u591a\u65f6\u95f4\u3002
\u6211\u662f\u4e00\u4e2aINFJ\uff0c \u559c\u6b22\u601d\u8003\uff0c\u559c\u6b22\u5206\u6790\uff0c\u559c\u6b22\u603b\u7ed3\u3002\u8eab\u8fb9\u7684INFJ\u8fd8\u633a\u591a\uff0c\u6bd4\u5982\u53f3\u8fb9\u53cb\u60c5\u94fe\u63a5\u4e2d\u7684\u5f20\u6768\u540c\u5b66
\u559c\u6b22\u4e8c\u6b21\u5143\uff0c\u9b3c\u755c\uff0c\u5404\u79cd\u4e9a\u6587\u5316\uff0c \u6df7\u8ff9\u4e8ebilibili\uff0c\u97f3\u4e50\uff0c\u6e38\u620f\uff0c\u4ee3\u7801\u7b49\uff0c\u4e00\u53f0\u7535\u8111\u5c31\u591f\u6211\u5728\u623f\u95f4\u91cc\u73a9\u4e0a\u4e00\u6574\u5929
\u78a7\u84dd\u822a\u7ebf\u8d44\u6df1\u73a9\u5bb6\uff0c\u5f00\u670d\u73a9\u5230\u73b0\u5728\uff0c\u62c5\u4efb\u8230\u957f\uff0c\u5927\u5c31\u662f\u597d
\u660e\u65e5\u65b9\u821f\u8001\u73a9\u5bb6\uff0c\u6284\u4f5c\u4e1a\u73a9\u5bb6\uff0c\u4e0d\u73a9\u8089\u9e3d
\u96f6\u6c2a\u7edd\u8d5e\u8fdb\u884c\u4e2d
\u7965\u4e91\u53bf\u5357\u4eac\u4fe1\u606f\u5de5\u7a0b\u5927\u5b66\u5357\u4eac\u7406\u5de5\u5927\u5b66\u798f\u5ca1\u5de5\u696d\u5927\u5b66\u8001\u5bb6\u4e91\u5357\u5927\u7406\u7684\u7965\u4e91\u53bf\uff0c\u662f\u4e00\u4e2a\u5c0f\u53bf\u57ce\uff0c \u4e0e\u5927\u7406\u5e02\u76f8\u90bb\uff0c\u662f\u901a\u5f80\u6ec7\u897f\u5730\u533a\u7684\u5173\u9698\u4e4b\u5730\u3002
\u4e91\u5357\u4e4b\u6e90
\u7965\u4e91\u53bf\u5386\u53f2\u60a0\u4e45\uff0c\u897f\u6c49\u5143\u5c01\u4e8c\u5e74\uff08\u524d109\u5e74\uff09\u8bbe\u53bf\uff0c\u540d\u4e91\u5357\u53bf\uff0c\u662f\u4e91\u5357\u7701\u540d\u7684\u8d77\u6e90\u5730\uff0c\u6709\u201c\u4e91\u5357\u4e4b\u6e90\u201d\u201c\u5f69\u4e91\u4e4b\u4e61\u201d\u7684\u8a89\u79f0\uff0c\u66fe\u7ecf\u957f\u671f\u4e3a\u6ec7\u897f\u5317\u7684\u653f\u6cbb\u3001\u7ecf\u6d4e\u548c\u6587\u5316\u4e2d\u5fc3\u30021918\u5e74\uff0c\u4e3a\u514d\u7701\u53bf\u540c\u540d\uff0c\u4e91\u5357\u53bf\u6539\u79f0\u7965\u4e91\u53bf\u3002\u2014\u2014from wiki
\u6bcf\u4e2a\u7965\u4e91\u4eba\u90fd\u7231\u901b\u7684\u5730\u65b9\u2014\u2014\u949f\u9f13\u697c \u4f5c\u8005\uff1aKcx36
\u672c\u79d1\u6bcd\u6821\uff0c\u5e94\u7528\u7269\u7406\u4e13\u4e1a\uff0c4\u5e74\u8fc7\u7684\u975e\u5e38\u201c\u8282\u80fd\u201d\uff08\u5c31\u50cf\u51b0\u83d3\u91cc\u7684\u6298\u6728\u5949\u592a\u90ce\uff09\uff0c\u6ca1\u6302\u8fc7\u79d1\uff0c\u6210\u7ee9\u4e5f\u662f\u4e2d\u7b49\u504f\u4e0a\uff0c \u4f46\u4e5f\u6ca1\u505a\u4ec0\u4e48\u7279\u522b\uff0c\u6ca1\u4ec0\u4e48\u6210\u679c\u3002\u611f\u89c9\u6700\u53d7\u76ca\u7684\u662f\u9ad8\u6570\uff0c\u5149\u5b66\uff0c\u7269\u7406\u5b66\uff0c\u7535\u8def\uff0c\u5d4c\u5165\u5f0f
\u5b66\u6821\u867d\u7136\u662f\u53cc\u975e\uff0c\u4f46\u6211\u4f9d\u7136\u611f\u6fc0\u8001\u5e08\u548c\u540c\u5b66\uff0c\u8fd8\u6709\u996d\u5802\u3002 \u7279\u522b\u662f\u8ba9\u6211\u7ed3\u8bc6\u4e86\u51e0\u4f4d\u631a\u53cb\u3002
\u9760\u7740\u52aa\u529b\u8003\u4e0a\u5357\u7406\u5de5\u7684\u7814\u7a76\u751f\uff0c\u5fae\u7cfb\u7edf\u4e0e\u6d4b\u63a7\u6280\u672f(1)\u65b9\u5411\uff0c\u56e0\u4e3a\u6ca1\u4eba\u5f53\u8d39\u529b\u4e0d\u8ba8\u597d\u7684\u73ed\u957f\uff0c \u6211\u5c31\u6210\u4e3a\u4e86\u73ed\u957f\u3002\u4f46\u4e0a\u4e86\u534a\u5e74\u5c31\u6765\u65e5\u672c\u4e86\uff0c\u7ed3\u8bc6\u4e86\u6700\u597d\u7684\u5ba4\u53cb\u6768\u8301\u540c\u5b66\uff0c \u5728\u6211\u8eab\u5728\u4ed6\u4e61\u7684\u65f6\u5019\u5e2e\u4e86\u6211\u5f88\u591a\u5fd9\u3002
\u6545\u4e8b\u8fd8\u672a\u7ed3\u675f...
\u53c2\u52a0\u5357\u7406\u5de5\u7684\u53cc\u5b66\u4f4d\u9879\u76ee\uff0c\u5728\u65e5\u672c\u7559\u5b662\u5e74\uff08\u5357\u7406\u5de5\u4e5f\u5728\u7c4d\uff09
See more
\u5b8f\u89c2\u52a8\u753b\u6e38\u620f\u97f3\u4e50\u6211\u548c\u7236\u6bcd\uff1a\u300c\u4eba\u4e0d\u4e3a\u5df1\uff0c\u5929\u8bdb\u5730\u706d\u300d(1)\uff0c\u6211\u65e0\u6cd5\u4e3a\u81ea\u5df1\u7684\u81ea\u79c1\u8fa9\u9a73\uff0c \u4f46\u7236\u6bcd\u7ed9\u4e88\u4e86\u6211\u751f\u547d\uff0c\u5c06\u6211\u517b\u80b2\u6210\u4eba\uff0c\u5176\u6069\u60c5\u6211\u6050\u6015\u6211\u7528\u4e00\u751f\u90fd\u65e0\u6cd5\u507f\u8fd8\uff0c\u6240\u4ee5\u4e3a\u4e86\u4e0d\u8f9c\u8d1f\u4ed6\u4eec\uff0c \u6211\u5fc5\u987b\u6d3b\u4e0b\u53bb\u3002
\u6700\u5927\u7684\u7231\u597d\u4e4b\u4e00\uff0c\u827a\u672f\u5bf9\u6211\u6709\u5f3a\u5927\u7684\u5438\u5f15\u529b\uff0c\u52a8\u753b\u4e5f\u5305\u62ec\u5728\u5185\u3002\u867d\u7136\u73b0\u5728\u5df2\u7ecf\u57fa\u672c\u4e0d\u8ffd\u65b0\u756a\u4e86\uff0c\u4f46\u4f9d\u7136\u4f1a\u5173\u6ce8\u8bc4\u4ef7\u597d\u7684\u52a8\u753b\u4f5c\u54c1
\u5173\u4e8e\u52a8\u753b\u66f4\u591a\u7684\u8ba8\u8bba\uff0c\u53ef\u4ee5\u770b\u770bAnime\u677f\u5757
\u6700\u5927\u7684\u7231\u597d\u4e4b\u4e8c\uff0c\u4f46\u73a9\u7684\u6e38\u620f\u975e\u5e38\u5c11\u3002\u4ece4399\u5230\u8d5b\u5c14\u53f7\uff0c\u4ece\u8650\u6740\u539f\u578b\u5230LOL\uff0c \u4ece\u5d29\u574f\u5b66\u56ed2\u5230\u78a7\u84dd\u822a\u7ebf\uff0c\u4ece\u539f\u795e\u5230\u7edd\u533a\u96f6\u3002\u73b0\u5728\u73a9\u7684\u4e0d\u591a\u4e86
\u5173\u4e8e\u6e38\u620f\u66f4\u591a\u7684\u8ba8\u8bba\uff0c\u53ef\u4ee5\u770b\u770bGame\u677f\u5757
\u4ece\u5468\u6770\u4f26\uff0c\u9648\u5955\u8fc5\uff0c\u5230\u6b27\u7f8e\uff0c\u518d\u5230jpop\uff0c\u4ece\u6d41\u884c\u5230\u6447\u6eda\uff0c\u4ece\u53e4\u5178\u5230\u7535\u5b50\uff0c\u4ec0\u4e48\u90fd\u542c\u3002 \u53ea\u8981\u662f\u597d\u542c\u7684\u97f3\u4e50\uff0c\u6211\u90fd\u6765\u8005\u4e0d\u62d2\u3002
\u5173\u4e8e\u97f3\u4e50\u66f4\u591a\u7684\u8ba8\u8bba\uff0c\u53ef\u4ee5\u770b\u770bMusic\u677f\u5757
"},{"location":"about/#_2","title":"\u5173\u4e8e\u6211\u7684\u5934\u50cf","text":"\u6b63\u9762\u53cd\u9762\u7b97\u662f\u6211\u7f51\u7edc\u4e0a\u7684\u5e38\u7528\u5934\u50cf\u4e86\uff0c\u6765\u81ea\u7f51\u7edc\uff0c\u4f5c\u8005\u672a\u77e5\uff0c\u662f\u6211\u7684\u672c\u547d\u4f5c\u300a\u30ce\u30fc\u30b2\u30fc\u30e0\u30fb\u30ce\u30fc\u30e9\u30a4\u30d5\u300b\uff08\u4e2d\u6587\uff1a\u6e38\u620f\u4eba\u751f\uff09\u4e2d\u7684\u4e24\u4f4d\u4e3b\u89d2\u3002\u5173\u4e8e\u6211\u5bf9\u8fd9\u4e2a\u4f5c\u54c1\u7684\u8ba8\u8bba\uff0c\u53ef\u79fb\u6b65\u8be6\u60c5\u3002
\u65e5\u51fa\u4e4b\u65f6\u5230\u8fbe\u5bcc\u58eb\u5c71\u9876\uff0c\u5728\u706b\u5c71\u53e3\u62cd\u7684\u7167\uff0c\u5728bilibili\u6295\u7a3f\u4e86\u89c6\u9891
"},{"location":"template/","title":"Template","text":"\u8fd9\u662f\u4e00\u4e2a\u6807\u51c6\u6a21\u677f
this is a stander template
","tags":["Template"]},{"location":"test/","title":"Test","text":"Just a page for testing
"},{"location":"test/#pyscript-example","title":"PyScript Example","text":"\u4e0b\u9762\u662f\u4e00\u4e2a PyScript \u793a\u4f8b\uff1a
"},{"location":"world/","title":"\u8db3\u8ff9","text":"\u8fd9\u662f\u4e00\u4e2a\u6807\u51c6\u6a21\u677f
this is a stander template
","tags":["\u8db3\u8ff9"]},{"location":"anime/","title":"\u52a8\u753b","text":"\u65e5\u6587\u5047\u540d\u8bd1\u81eaNo Game No Life\uff08\u7b80\u5199\u4f5cngnl\uff09\u3002\u6211\u6700\u65e9\u4eceTV\u52a8\u753b\u5f00\u59cb\u63a5\u89e6\uff0c\u4e4b\u540e\u5f00\u59cb\u8bfb\u5c0f\u8bf4\uff0c\u540e\u9762\u53c8\u51fa\u4e86\u9707\u60ca\u5708\u5185\u7684\u5267\u573a\u7248\u3002TV\u52a8\u753b\u548c\u5267\u573a\u7248\u6211\u90fd\u662f\u975e\u5e38\u63a8\u8350\u7684\u4f73\u4f5c\u4e2d\u7684\u4f73\u4f5c\u3002
Note
\u4e4b\u6240\u4ee5\u53ea\u80fd\u7b97\u662f\u4f73\u4f5c\uff0c\u662f\u56e0\u4e3a\u5bf9\u4e8e\u52a8\u753b\u672c\u8eab\uff0c\u6211\u5fc3\u4e2d\u7684\u7b2c\u4e00\u540d\u5176\u5b9e\u662f\u300a\u4e52\u4e53\u300b\uff0c\u5173\u4e8e\u300a\u4e52\u4e53\u300b\u66f4\u591a\u7684\u8ba8\u8bba\uff0c\u53ef\u4ee5\u770b\u8fd9\u91cc\u3002
"},{"location":"anime/ngnl/#tv","title":"TV\u52a8\u753b","text":""},{"location":"anime/ngnl/#_2","title":"\u5267\u573a\u7248","text":""},{"location":"anime/ngnl/#_3","title":"\u5c0f\u8bf4","text":""},{"location":"blog/","title":"Blog","text":"BroadcastChannel\u80fd\u5c06Telegram\u516c\u5171\u9891\u9053\u8f6c\u4e3a\u7b80\u6613\u535a\u5ba2
\u6e90\uff1ahttps://treehole.lvista.site/
"},{"location":"blog/2025/01/08/site_build/","title":"\u81ea\u5efa\u4e3b\u9875\uff1a\u59cb","text":"\u4ece\u840c\u751f\u4e00\u4e2a\u5efa\u7ad9\u7684\u60f3\u6cd5\uff0c\u5230\u6210\u529f\u6784\u5efa\u4e00\u4e2a\u57fa\u672c\u6846\u67b6\u7684\u8fc7\u7a0b\u3002\u5177\u4f53\u505a\u6cd5\u5b98\u7f51\u7ed9\u7684\u5f88\u8be6\u7ec6\uff0c\u8fd9\u91cc\u53ea\u4f1a\u6307\u51fa\u4e00\u4e9b\u7279\u522b\u7684\u5730\u65b9
\u53c2\u8003
\u4e0d\u4e3a\u522b\u7684\uff0c\u5c31\u662f\u201c\u4ecb\u7ecd\u81ea\u6211\u201d\u3002\u5982\u679c\u662f\u4e3a\u4e86\u5206\u4eab\u4e00\u4e9b\u4e1c\u897f\uff0c\u5927\u53ef\u53bbCSDN(1)\u4e4b\u7c7b\u7684\u5730\u65b9\uff0c \u4e0d\u5fc5\u5728\u4e2a\u4eba\u4e3b\u9875\u4e0a\u5206\u4eab\u7ecf\u9a8c\uff0c\u8fd9\u6709\u6096\u4e92\u8054\u7f51\u7684\u201c\u5206\u4eab\u201d\u7cbe\u795e\u3002
Notion\u662f\u4e00\u4e2a\u5f88\u597d\u7684\u7b14\u8bb0\u8bb0\u5f55\u5e73\u53f0\uff0c\u529f\u80fd\u5f88\u5f3a\u5927\uff0c\u6211\u628a\u5f88\u591a\u8bb0\u5f55\u7684\u4e1c\u897f\u90fd\u653e\u5728\u8fd9\u91cc\uff0c \u4f46\u662f\u5e76\u4e0d\u80fd\u5b8c\u5168\u7684\u81ea\u5b9a\u4e49\uff0c\u5e76\u4e14\u66f4\u591a\u662f\u201c\u79c1\u6709\u201d\u7684\uff0c\u6240\u4ee5\u60f3\u5c06\u5176\u79fb\u690d\u5230\u4e2a\u4eba\u7f51\u7ad9\u4e0a\u3002
\u5bf9\u4e8e\u6211\u8fd9\u6837\u559c\u6b22\u6df7\u8ff9\u5728\u4e92\u8054\u7f51\uff0c\u89c6\u7535\u5b50\u8bbe\u5907\u4e3a\u201c\u6700\u4f73\u73a9\u5177\u201d\u7684\u4eba\u6765\u8bf4\uff0c \u4e2a\u4eba\u4e3b\u9875\u5c31\u662f\u6700\u597d\u7684\u540d\u7247\u3002\u901a\u8fc7\u8fd9\u6837\u7684\u201c\u540d\u7247\u201d\u6211\u7ed3\u5b9e\u4e86\u201c\u4e16\u53e6\u6211\u201d\u03a3\u5f20\u6768
","tags":["\u5efa\u7ad9","HTML","Material for MkDocs","Blog","\u4e2a\u4eba\u7f51\u7ad9"]},{"location":"blog/2025/01/08/site_build/#start-your-first-homepage","title":"Start your first homepage","text":"\u53ea\u9700\u8981\u9075\u4eceGetting-started \u6309\u7167\u987a\u5e8f\u4e00\u6b65\u6b65\u505a\u4e0b\u53bb\u5373\u53ef\u642d\u5efa\u5b8c\u6210\u7b2c\u4e00\u4e2aHP\uff0c\u4e4b\u540e\u5728GitHub Pages\u4e0a\u90e8\u7f72\u5373\u53ef\u3002\u52a8\u624b\u5b8c\u6210\u81f3Getting-started\u4e2d\u7684Publishing your site \u7ae0\u8282\u5373\u53ef\u5b8c\u6210\u57fa\u672c\u90e8\u7f72\u3002
\u5feb\u901f\u5b9e\u8df5\u4ee5\u4e0b\u4ec5\u4e3a\u201c\u6025\u6025\u56fd\u738b\u201d\u6216\u8005\u9700\u8981\u5c3d\u5feb\u642d\u5efa\u7684\u540c\u5b66\u7684\u53c2\u8003\uff0c\u5bf9\u4e8e\u5927\u591a\u6570\u4eba\uff0c \u4f9d\u7136\u5efa\u8bae\u6309\u7167Getting-started\u63d0\u4f9b\u7684\u6559\u7a0b\u8fdb\u884c.
pip install mkdocs-material
mkdocs.yml
\u4fee\u6539\u4ee5\u4e0b\u90e8\u5206(1): plugins:\n - search\n - blog:\n blog_toc: true\n archive_date_format: MMMM yyyy\n categories_allowed:\n - Holidays\n - News\n authors_profiles: true\n pagination_per_page: 5\n archive_pagination_per_page: 10\n categories_pagination_per_page: 10\n - tags\n
mkdocs serve
\u5373\u53ef\u5728\u672c\u5730\u6d4f\u89c8\u6548\u679cmkdocs build
\u521b\u5efa\u5305\u542bindex.html
\u7684\u7f51\u9875\u6587\u4ef6user.github.io
\u5373\u53ef\u770b\u5230\u7ed3\u679c\u66f4\u559c\u6b22\u6211\u7684\uff1f
\u5982\u679c\u60a8\u66f4\u559c\u6b22\u6211\u7684\uff0c\u53ef\u4ee5\u770b\u770b\u8fd9\u7bc7
GitHub Pages\u662f\u901a\u8fc7\u81ea\u52a8\u5bfb\u627e\u5f53\u524dBranch\u4e0a\u7684\u7684index.html
\u6765\u53d1\u5e03\u7f51\u9875\u7684\uff0c \u6240\u4ee5\u9700\u8981\u6ce8\u610frepo\u4e2d\u7684setting\u2192Pages\u2192Build and deployment\u4e0b\u7684Source\u8bbe\u7f6e\u662f\u5426\u662fDeploy from a branch\uff0c Branch\u662f\u5426\u8bbe\u7f6e\u4e3a\u7f16\u8bd1\u540e\u7684\u6587\u4ef6\u5206\u652f\uff0c\u8fd9\u4e2a\u8bbe\u7f6e\u5728\u540e\u9762\u4e5f\u4f1a\u63d0\u5230
\u4e3a\u4f55\u8981\u4f7f\u7528 GAW
GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that allows you to automate your build, test, and deployment pipeline. You can create workflows that build and test every pull request to your repository, or deploy merged pull requests to production.
from Publishing your site - Material for MkDocs
\u539f\u7406
\u4f7f\u7528 GAW \u6700\u5927\u7684\u597d\u5904\u5728\u4e8e\u5c06\u6e90\u6587\u4ef6\u548c\u7f16\u8bd1\u540e\u7684\u6587\u4ef6\u5e93\u5206\u5f00\u3002\u5e76\u4e14\u7f16\u8bd1\u5728 GAW \u4e0a\u5b8c\u6210\uff0c\u5bf9\u672c\u5730\u7f16\u8f91\u73af\u5883\u8981\u6c42\u964d\u4f4e\u4e86\u5f88\u591a\uff0c\u53ef\u4ee5\u5feb\u901f\u53d1\u5e03\u6587\u7ae0\u3002
\u539f\u7406\u5c31\u662f\u5c06\u7f16\u8bd1\u524d\u7684\u6587\u4ef6\u63a8\u9001\u5230Github\uff0cGithub\u4f1a\u6839\u636e.github\\workflows\\ci.yml
\u8fd0\u884c\u547d\u4ee4\uff0c \u5728\u8fd9\u91cc\u5c31\u662f\u5c06\u6587\u4ef6\u4e91\u7f16\u8bd1\u81f3gh-pages
\u5206\u652f\uff0c\u7136\u540eGithub Page\u4f1a\u5c55\u793agh-pages
\u5206\u652f\u7684\u7f51\u9875\u4ed3\u5e93\uff0c \u800c\u6e90\u6587\u4ef6\u5219\u5728main
\u5206\u652f\u4e2d\u3002
ci.yml
\u7684\u521b\u5efamkdocs.yml
\u7684\u6e90\u6587\u4ef6\u5e93\u63a8\u9001\u81f3main
\u5206\u652fSetting
->Pages
->Build and deployment
\u4e2d\uff0c\u5c06Branch
\u8bbe\u5b9a\u4e3agh-pages
\u5f53\u4f7f\u7528git-revision-date-localized \u6a21\u5757\u540e\uff0c\u5728 GAW \u8fd0\u884c\u65f6\u4f1a\u51fa\u73b0\u8fd9\u6837\u7684\u9519\u8bef\u3002\u8bf7\u4fee\u6539.github/workflows/ci.yml
\u5185\u5bb9\u5982\u4e0b\uff0c\u8ba9 GAW \u4e0b\u8f7d\u8be5\u6a21\u5757\uff1a
name: ci\non:\npush:\n branches:\n - main\npermissions:\ncontents: write\njobs:\ndeploy:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n - name: Configure Git Credentials\n run: |\n git config user.name github-actions[bot]\n git config user.email 41898282+github-actions[bot]@users.noreply.github.com\n - uses: actions/setup-python@v5\n with:\n python-version: 3.x\n - run: echo \"cache_id=$(date --utc '+%V')\" >> $GITHUB_ENV\n - uses: actions/cache@v4\n with:\n fetch-depth: 0\n key: mkdocs-material-${{ env.cache_id }}\n path: .cache\n restore-keys: |\n mkdocs-material-\n - run: pip install mkdocs-material\n - run: pip install mkdocs-git-revision-date-localized-plugin\n - run: mkdocs gh-deploy --force\n
","tags":["\u5efa\u7ad9","HTML","Material for MkDocs","Blog","\u4e2a\u4eba\u7f51\u7ad9"]},{"location":"blog/2025/01/08/site_build/#_2","title":"\u56fd\u5185\u8bbf\u95ee","text":"Note
\u8bf7\u786e\u8ba4\u5df2\u5728GitHub Pages\u4e0a\u90e8\u7f72\u597d\u7f51\u7ad9\u5e76\u53ef\u4ee5\u8bbf\u95ee\u3002
\u56fd\u5185\u8bbf\u95eeGitHub Pages\u63d0\u4f9b\u7684username.github.io
\u4f1a\u51fa\u73b0\u52a0\u8f7d\u6162\u7684\u60c5\u51b5\uff0cvercel \u4e4b\u7c7b\u7684\u5e73\u53f0\u4e5f\u65e0\u6cd5\u5728\u56fd\u5185\u8fdb\u884c\u8bbf\u95ee\uff0c\u6240\u4ee5\u5c31\u9700\u8981\u53e6\u5916\u4e00\u79cd\u65b9\u6cd5\u6765\u8fdb\u884c\u4ee3\u7406\u8bbf\u95ee\u3002\u8fd9\u91cc\u6211\u4eec\u4f7f\u7528\u57df\u540d+DNS\u89e3\u6790\u7684\u65b9\u6cd5\u3002
.site
\u57df\u540d\uff1blvista.site
\uff0c\u627e\u5230\u4e91\u89e3\u6790DNS
\u670d\u52a1\uff0c\u9009\u62e9\u65b0\u624b\u5feb\u901f\u89e3\u6790
username.github.io
\uff0c\u5c31\u80fd\u5f00\u542f\u514d\u8d39\u5957\u9910\u7248\u7684\u4e91\u89e3\u6790DNS\u670d\u52a1Setting
->Pages
-> Chustom domain
\u4e2d\u8f93\u5165\u57df\u540d\uff0c\u4fdd\u5b58\u5230\u6b64\u4e3a\u6b62\uff0c\u4f60\u5df2\u7ecf\u6210\u529f\u5b8c\u6210\u4ee5\u4e0b\u529f\u80fd\uff1a
\u606d\u559c\u4f60\uff0c\u4f60\u53c8\u8fdb\u6b65\u4e86\uff01\uff01
","tags":["\u5efa\u7ad9","HTML","Material for MkDocs","Blog","\u4e2a\u4eba\u7f51\u7ad9"]},{"location":"blog/2025/01/10/build_sim/","title":"\u7ed9\u6211\u4e5f\u6574\u4e00\u4e2a\uff01","text":"\u6574\u4e00\u4e2a\u4e0e\u672c\u7ad9\u7c7b\u4f3c\u7684\u7f51\u7ad9
\u9996\u5148\u8c22\u8c22\u9891\u5e55\u524d\u7684\u4f60\u5bf9\u6211\u7684\u8ba4\u540c\uff0c\u8bdd\u4e0d\u591a\u8bf4\uff0c\u5f00\u6574\uff01
","tags":["\u5efa\u7ad9","HTML","Material for MkDocs","Blog","\u4e2a\u4eba\u7f51\u7ad9"]},{"location":"blog/2025/01/10/build_sim/#_2","title":"\u51c6\u5907","text":"\u4e4b\u540e\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u5373\u53ef\u9884\u89c8
mkdocs serverTip
mkdocs server
\u8fd0\u884c\u540e\u4e0d\u4f1a\u81ea\u52a8\u4e2d\u6b62\u8fdb\u7a0b\uff0c\u4f7f\u7528Ctrl+C\u5373\u53ef\u5f3a\u884c\u7ec8\u6b62\u8fdb\u7a0b\u3002 \u8fdb\u7a0b\u5f00\u59cb\u540e\uff0c \u5927\u90e8\u5206 \u7684\u7f51\u9875\u7684\u4fee\u6539\u4f1a\u540c\u6b65\u8ddf\u65b0\u5230\u7f51\u9875\uff0c\u4e0d\u9700\u8981\u91cd\u65b0\u542f\u52a8\u3002
\u5927\u90e8\u5206\u8bbe\u7f6e\u53ef\u53c2\u8003Customization \u8fd9\u91cc\u5bf9\u6211\u52a0\u5165\u7684\u8fdb\u884c\u8bf4\u660e
","tags":["\u5efa\u7ad9","HTML","Material for MkDocs","Blog","\u4e2a\u4eba\u7f51\u7ad9"]},{"location":"blog/2025/01/10/build_sim/#_5","title":"\u9996\u9875\u5934\u50cf","text":"\u53ef\u4fee\u6539docs/index.md
\u4e2d\u7684\u56fe\u7247\u548c\u6587\u5b57
docs/index.md
docs/css/custom.css
<div class=\"flip-container\">\n<div class=\"image-container\">\n <!-- docs/assets/images/logo_noBG_circle.png -->\n <img src=\"https://s2.loli.net/2025/01/09/ve1piNRt6M5ycDQ.png\" alt=\"Front Image\">\n <a href=\"/template/\" >\n <!-- docs/assets/images/self_shoot.png -->\n <img src=\"https://s2.loli.net/2025/01/09/wOzTR9Kyfq2jMHo.png\" alt=\"Back Image\">\n </a>\n</div>\n<div class=\"hover-block\">\n \u70b9\u6211\u770b\u770b!\n</div>\n</div>\n
.flip-container {\n position: relative;\n width: 300px;\n height: 300px;\n margin: 10px auto;\n display: flex;\n align-items: flex-start;\n /* \u5bf9\u9f50\u9876\u90e8 */\n justify-content: flex-end;\n /* \u5c06\u6587\u5b57\u653e\u7f6e\u53f3\u4e0a\u89d2 */\n}\n\n/*more...*/\n
","tags":["\u5efa\u7ad9","HTML","Material for MkDocs","Blog","\u4e2a\u4eba\u7f51\u7ad9"]},{"location":"blog/2025/01/10/build_sim/#_6","title":"\u53cb\u60c5\u94fe\u63a5","text":"\u53ef\u4fee\u6539overrides/main.html
\u4e2d\u7684\u56fe\u7247\u548c\u94fe\u63a5
overrides/main.html
css/float_cards.css
mkdocs.yml
{% block site_nav %}\n<!-- Navigation -->\n{% if nav %}\n{% if page.meta and page.meta.hide %}\n{% set hidden = \"hidden\" if \"navigation\" in page.meta.hide %}\n{% endif %}\n<div class=\"md-sidebar md-sidebar--primary\" data-md-component=\"sidebar\" data-md-type=\"navigation\" {{ hidden }}>\n <div class=\"md-sidebar__scrollwrap\">\n <div class=\"md-sidebar__inner\">\n {% include \"partials/nav.html\" %}\n </div>\n </div>\n</div>\n\n{% endif %}\n\n<!-- Table of contents -->\n{% if \"toc.integrate\" not in features %}\n{% if page.meta and page.meta.hide %}\n{% set hidden = \"hidden\" if \"toc\" in page.meta.hide %}\n{% endif %}\n<div class=\"md-sidebar md-sidebar--secondary\" data-md-component=\"sidebar\" data-md-type=\"toc\" {{ hidden }}>\n <div class=\"md-sidebar__scrollwrap\">\n <div class=\"md-sidebar__inner\">\n {% include \"partials/toc.html\" %}\n </div>\n <div class=\"card-container\">\n <h3>\u53cb\u60c5\u94fe\u63a5</h3>\n <div class=\"card\">\n <div class=\"img-container\">\n <a href=\"https://yangzhang.site/\" target=\"_blank\">\n <img src=\"https://yangzhang.site/assets/images/summation.png\"\n style=\"width: 70%; height: 70%; object-fit: contain;\">\n </a>\n </div>\n <div class=\"content\">\n <a href=\"https://yangzhang.site/\" target=\"_blank\">\n <h3>yangzhang's Site</h3>\n </a>\n </div>\n </div>\n </div>\n\n </div>\n</div>\n{% endif %}\n{% endblock %}\n
.card-container {\nmargin: 50px 0 0 0;\ndisplay: flex;\nflex-flow: row wrap;\nflex-wrap: wrap;\nalign-content: flex-start;\ntext-align: center;\n}\n/*...see more */\n
extra_css:\n - css/float_cards.css\n
","tags":["\u5efa\u7ad9","HTML","Material for MkDocs","Blog","\u4e2a\u4eba\u7f51\u7ad9"]},{"location":"blog/2025/01/14/jp_home/","title":"Template","text":"\u8fd9\u662f\u4e00\u4e2a\u6807\u51c6\u6a21\u677f
this is a stander template
","tags":["\u7559\u5b66","\u65e5\u672c"]},{"location":"blog/2025/01/19/np_bc/","title":"Numpy\u4e2d\u7684\u5e7f\u64ad\u673a\u5236","text":"\u4f7f\u7528Numpy\u8fdb\u884c\u673a\u5668\u5b66\u4e60\u65f6\uff0c\u5411\u91cf\u4e4b\u95f4\u7684\u8fd0\u7b97\u6d89\u53ca\u5230\u5230\u5e7f\u64ad\u673a\u5236(Broadcast)\uff0c \u8be6\u7ec6\u7684\u5e7f\u64ad\u673a\u5236\u662f\u5f88\u957f\u7684\uff0c\u4f46\u662f\u53ef\u901a\u8fc7\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\u5c31\u80fd\u7aa5\u89c1\u5176\u4e00\u4e8c\u3002
","tags":["Python","Numpy","\u5e7f\u64ad\u673a\u5236","\u673a\u5668\u5b66\u4e60"]},{"location":"blog/2025/01/19/np_bc/#_1","title":"\u80cc\u666f","text":"\u5728\u5b66\u4e60\u673a\u5668\u5b66\u4e60\u65f6\uff0c\u5c1d\u8bd5\u4f7f\u7528Numpy\u6784\u5efa\u4e00\u4e2a\u7b80\u5355\u7684\u591a\u8f93\u5165\u7279\u5f81\u7684\u5b9e\u9a8c\u6027\u4ee3\u7801\u65f6\uff0c \u53d1\u73b0\u6700\u540e\u7684\u7ed3\u679c\u51fa\u73b0\u4e86\u7ef4\u5ea6\u4e0a\u5347\u95ee\u9898\uff0c\u5982\u4e0b\uff0c\u5728\u8fd9\u91cc\u4f7f\u7528\u4e86\uff1a
import numpy as np\n\nn = 500\nm = 5\nw = np.array([[3,2,6,1,7]]).T\nb = 8\nnp.random.seed(42)\nx = np.random.rand(m, n)\nx_aug = np.pad(x, ((0, 1), (0, 0)), 'constant', constant_values=1)\nw_aug = np.pad(w, ((0, 1), (0, 0)), 'constant', constant_values=b)\ny = np.dot(w_aug.T,x_aug)\n\n# \u6dfb\u52a0\u9ad8\u65af\u566a\u58f0 \nmu, sigma = 0, 1 # \u5747\u503c\u548c\u6807\u51c6\u5dee \nnoise = np.random.normal(mu, sigma, y.shape) \ny_noisy = y + noise\n\nfrom sklearn.model_selection import train_test_split\n\n# \u8f6c\u7f6e x_aug \u548c y_noisy \u4ee5\u8fdb\u884c\u6253\u4e71\u548c\u5206\u5272\nx_aug = x_aug.T\ny_noisy = y_noisy.T\n\n# \u5c06\u6570\u636e\u6253\u4e71\u5e76\u5206\u6210\u8bad\u7ec3\u96c6\u548c\u6d4b\u8bd5\u96c6\nx_train, x_test, y_train, y_test = train_test_split(x_aug, y_noisy, test_size=0.2, random_state=42)\n\n# \u8f93\u51fa\u7ed3\u679c\nprint(\"\u8bad\u7ec3\u96c6 X \u7684\u5f62\u72b6:\", x_train[:,:-1].shape)\nprint(\"\u6d4b\u8bd5\u96c6 X \u7684\u5f62\u72b6:\", x_test.shape)\nprint(\"\u8bad\u7ec3\u96c6 Y \u7684\u5f62\u72b6:\", y_train.shape)\nprint(\"\u6d4b\u8bd5\u96c6 Y \u7684\u5f62\u72b6:\", y_test.shape)\n
# \u7ebf\u6027\u6a21\u578b\u51fd\u6570\ndef line_fun(x, w, b):\n return np.dot(w.T, x)+b\n\n\n# \u8bbe\u5b9a\u4e00\u4e2a\u5e73\u65b9\u635f\u5931\u51fd\u6570\u7684\u68af\u5ea6\u4f18\u5316\ndef gradient_optimization(x, y, w, b):\n y_pre = line_fun(x, w, b)\n grad_w = -(y - y_pre) * x\n grad_b = -(y - y_pre)\n return grad_w, grad_b\n# \u635f\u5931\u51fd\u6570 \ndef loss_function(x, y, k, b): \n y_pre = line_fun(x, k, b) \n return np.mean((y - y_pre) ** 2)\n
# \u8bbe\u5b9a\u5b66\u4e60\u53d8\u91cfw\u548cb\u7684\u521d\u59cb\u503c\nw = np.ones((5, 1)) # \u521d\u59cb\u6743\u91cd\u5411\u91cf\uff0c\u7ef4\u5ea6\u4e3a5*1\nb = 0.0\nlearning_rate = 0.001\ndecay_rate = 0.5\n\ntolerance = 1e-6\nmax_epochs = 1000\nmin_improvement = 1e-6\npatience = 10\n\n# \u8bad\u7ec3\u8fc7\u7a0b\nprevious_loss = float('inf')\nimprovement_streak = 0\n\n# \u8bad\u7ec3\u96c6\u5faa\u73af\nfor i in range(max_epochs):\n learning_rate = 0.01 / (1 + decay_rate * i)\n current_loss = 0\n for n in range(x_train.shape[0]):\n x_n = x_train[n, :-1] # \u8f93\u5165\u7279\u5f81\u5411\u91cf\n y_n = y_train[n] # \u76ee\u6807\u503c\n grad_w, grad_b = gradient_optimization(x_n, y_n, w, b)\n w = w - learning_rate * grad_w\n b = b - learning_rate * grad_b\n current_loss += loss_function(x_n, y_n, w, b)\n\n current_loss /= x_train.shape[0]\n if abs(previous_loss - current_loss) < min_improvement:\n improvement_streak += 1\n else:\n improvement_streak = 0\n\n if improvement_streak >= patience:\n print(f\"Training stopped after {i} epochs due to no significant improvement.\")\n break\n\n previous_loss = current_loss\n\nprint(f\"Final values: w={w.T},\\n b={b}, loss={previous_loss}\")\n
output:\nFinal values: w=[[3.02622292 3.02622292 3.02622292 3.02622292 3.02622292]\n [2.44689788 2.44689788 2.44689788 2.44689788 2.44689788]\n [5.7501989 5.7501989 5.7501989 5.7501989 5.7501989 ]\n [1.51654221 1.51654221 1.51654221 1.51654221 1.51654221]\n [6.47852751 6.47852751 6.47852751 6.47852751 6.47852751]], \n b=[ 6.95328209 8.38911179 0.17837436 10.70002468 -1.62483275], loss=4.85157491175411\n
\u53ef\u4ee5\u53d1\u73b0\uff0cw\u548cb\u5747\u88ab\u5e7f\u64ad\u673a\u5236\u6269\u5145\u4e3a(5,5)(1,5)\u7684\u77e9\u9635\u3002\u5404\u4f4d\u53ef\u4ee5\u601d\u8003\u4e00\u4e0b\u4e3a\u4ec0\u4e48\u3002","tags":["Python","Numpy","\u5e7f\u64ad\u673a\u5236","\u673a\u5668\u5b66\u4e60"]},{"location":"blog/2025/01/19/np_bc/#_2","title":"\u95ee\u9898\u6240\u5728","text":"\u7ecf\u8fc7\u7e41\u7410\u7684\u95ee\u9898\u6392\u67e5\uff0c\u505a\u4e86\u4ee5\u4e0b\u6d4b\u8bd5\u4ee3\u7801\uff1a
Test1.pyTest2.pyx = np.ones((5,)) # \u76f8\u5f53\u4e8ex_n = x_train[n, :-1] (1)\nw = np.ones((5,1))# \nb = 1.0\ny = 1\ny_pre = np.dot(w.T, x)+b\nw = w + (y - y_pre) * x\nprint(f\"shape of w: {w.shape}\")\n\ny_pre = np.dot(w.T, x)+b\nprint(f\"shape of y_pre: {y_pre.shape}\")\n
output: \nshape of w: (5, 5)\nshape of y_pre: (5,)\n
x = np.ones((5,1))\nw = np.ones((5,1))\nb = 1.0\ny = 1\ny_pre = np.dot(w.T, x)+b\nw = w + (y - y_pre) * x\nprint(f\"shape of w: {w.shape}\")\n\ny_pre = np.dot(w.T, x)+b\nprint(f\"shape of y_pre: {y_pre.shape}\")\n
output: \nshape of w: (5, 1)\nshape of y_pre: (1, 1)\n
\u5de6\u8fb9\u662fx = np.ones((5,))
\uff0c\u76f8\u5f53\u4e8e\u4e00\u4e2a5\u4e2a\u5e38\u6570\u3002 \u53f3\u8fb9\u662fx = np.ones((5,1))
\uff0c\u662f\u4e00\u4e2a\u884c\u5411\u91cf
\u6ce8\u610fw = w + (y - y_pre) * x
\u8fd9\u4e00\u6b65\u7684\u8fd0\u7b97\uff1a
(y - y_pre) * x
-->(1,)\u4e58\u4ee5(5,)\uff0c\u5f97\u5230\u7684shape\u4e3a(5,)w + (y - y_pre) * x
-->(5,1)\u52a0(5,)\uff0c\u5f97\u5230\u7684shape\u4e3a(5,5)(y - y_pre) * x
-->(1,)\u4e58\u4ee5(5,1)\uff0c\u5f97\u5230\u7684shape\u4e3a(5,1)w + (y - y_pre) * x
-->(5,1)\u52a0(5,1)\uff0c\u5f97\u5230\u7684shape\u4e3a(5,1)\u5728Numpy\u4e2d\uff0c\u5c24\u5176\u9700\u8981\u6ce8\u610f(5,)\u8fd9\u6837shape\u7684\u53d8\u91cf\uff0c\u5b83\u4f1a\u88ab\u5f53\u4f5c5\u4e2a\u5e38\u91cf\uff0c\u53735\u4e2ashape\u4e3a(1,1)\u7684\u5411\u91cf\uff0c \u4e0eshape\u4e3a(5,1)\u7684\u5411\u91cf\u4f5c\u52a0\u7b97\u4f1a\u5f97\u5230shape\u4e3a(5,5)\u7684\u5411\u91cf\u3002
\u8fd9\u4e5f\u5c31\u662f\u4e3a\u4ec0\u4e48\u5728\u4f17\u591a\u5173\u4e8eNumpy\u7684\u4e66\u7c4d\u548c\u6559\u7a0b\u4e2d\uff0c\u4f18\u5148\u4f7f\u7528\u884c\u5411\u91cf\u7684\u8868\u793a\u65b9\u5f0f\u7684\u539f\u56e0\u3002
\u8bd5\u4e00\u8bd5
\u8bd5\u8bd5\u4e0b\u9762\u4ee3\u7801\u770b\u770b\u7ed3\u679c\uff0c\u53d1\u73b0\u4e86\u4ec0\u4e48\uff1f
x = np.ones((5,)) # \u8f93\u5165\u7279\u5f81\u5411\u91cf\nw = np.ones((5,1))\nprint(f\"shape of the result: {(x - w)}\")\nprint(f\"shape of the result: {(x * w)}\")\nprint(f\"shape of the result: {np.subtract(x, w)}\")\nprint(f\"shape of the result: {np.dot(x, w)}\")\n
","tags":["Python","Numpy","\u5e7f\u64ad\u673a\u5236","\u673a\u5668\u5b66\u4e60"]},{"location":"blog/2025/01/06/Vedio_processing_by_python/","title":"\u57fa\u4e8ePython\u7684\u89c6\u9891\u5904\u7406","text":"\u4e00\u5f00\u59cb\u6211\u662f\u4e3a\u4e86\u505a\u4e00\u4e2aGIF\u56fe\uff0c\u7136\u540e\u8fdb\u884c\u4e00\u4e2a\u538b\u7684\u7f29\uff0c\u7f29\u52308M\u4ee5\u4e0b\uff0c\u4ee5\u4fbf\u53d1\u5230B\u7ad9\u52a8\u6001\u3002\u4f46\u662f\u7f51\u4e0a\u7684\u5728\u7ebf\u538b\u7f29\u5de5\u5177\u90fd\u4e0d\u592a\u597d\u7528\uff0c\u4e8e\u662f\u60f3\u5230\u4e86Python\uff0c\u4e00\u67e5\u679c\u7136\u6709\u8fd9\u6837\u7684\u5a92\u4f53\u5904\u7406\u6a21\u5757\uff1amoviepy
\u53c2\u8003\u4e86\u4ee5\u4e0b\u6587\u7ae0\uff1a
\u9996\u5148\u7528Win11\u81ea\u5e26\u7684\u89c6\u9891\u526a\u8f91\u8f6f\u4ef6\u526a\u4e86\u4e00\u4e0b\uff0c\u7136\u540e\u5bfc\u5165moviepy
\uff0c\u6309\u7167\u6559\u7a0b\u7ed9\u7684\u4ee3\u7801\u8fdb\u884c\u6d4b\u8bd5\uff1a
from moviepy.editor import *\n\nclip = VideoFileClip(r\"C:\\Users\\czc_c\\Downloads\\Liar Dancer.mp4\")\nclip = clip.resize(0.4) # \u538b\u7f29\u5927\u5c0f\nclip.write_gif(\"movie-10f.gif\",fps=15) #\u8bbe\u7f6e\u4e3a\u6bcf\u79d215\u5e27\n
`module 'PIL.Image' has no attribute 'ANTIALIAS'
error\uff1amodule 'PIL.Image' has no attribute 'ANTIALIAS'
\u67e5\u4e86\u4e4b\u540e\u53d1\u73b0\u662fPillow \u4ece10.0\u7248\u672c\u540e\u5c31\u79fb\u9664\u4e86ANTIALIAS
\uff0c\u89e3\u51b3\u65b9\u6848\u5c31\u662f\u5bfc\u51659.5\u7248\u672c\u3002
AttributeError: module 'PIL.Image' has no attribute 'ANTIALIAS'
","tags":["Python","Vedio","Image"]},{"location":"blog/2025/01/16/pavlovian/","title":"\u7406\u5de5\u751f\u4e0d\u4f1a\u68a6\u89c1\u5df4\u752b\u6d1b\u592b\u6761\u4ef6\u53cd\u5c04","text":"Learning when not to solve a problem is one of the hardest things I've learnt.
Quote
Programmers have a pavlovian engineering response. Pose them a problem and they'll start trying to solve it. Give them a chance to co-engineer along with your presentation by making sure the first bite gets their saliva flowing. Then you can explain the rest of the problem and your brilliant solution knowing that they are there along with you.
\u4eca\u5929\u770b\u5230\u4e00\u7bc7\u6587\u7ae0\uff0c\u63d0\u5230\u8be5\u5982\u4f55\u5728\u4e00\u6b21\u53d1\u8868\u4e2d\u5438\u5f15\u89c2\u4f17\u7684\u6ce8\u610f\u529b\uff0c\u8bf4\u662f\u8981\u5148\u679c\u540e\u56e0\uff0c\u6216\u8005\u662f\u5012\u53d9\u3002\u6bd4\u5982\u5148\u8bf4\u51fa\u4e00\u4e2a\u82f1\u96c4\u6b63\u5728\u88ab\u903c\u5165\u7edd\u5883\uff0c\u540e\u4ece\u5934\u5f00\u59cb\u63cf\u8ff0\u4e00\u5207\u7684\u5f00\u7aef\u3002
\u6bd4\u8d77\u8fd9\u4e2a\uff0c\u6211\u66f4\u559c\u6b22\u8fd9\u4e2a\u6587\u7ae0\u91cc\u63d0\u5230\u7684\uff0cpavlovian engineering response\uff0c\u7406\u5de5\u751f\u7684\u5df4\u666e\u6d1b\u592b\u6761\u4ef6\u53cd\u5c04\uff0c\u4ed6\u4eec\u770b\u5230\u4e00\u4e2a\u95ee\u9898\u4f1a\u4e0d\u81ea\u89c9\u5f00\u59cb\u601d\u8003\u89e3\u51b3\u7684\u7684\u65b9\u6cd5\u3002\u8fd9\u53ef\u592a\u611f\u540c\u8eab\u53d7\u4e86\uff0c\u7406\u5de5\u7537\u7684\u7279\u6709\u7684\u76f4\u7537\u8868\u73b0\uff0c\u6536\u5230\u6765\u81ea\u5f02\u6027\u7684\u503e\u8bc9\u9996\u5148\u5e76\u4e0d\u662f\u611f\u540c\u8eab\u53d7\u53bb\u5b89\u6170\uff0c\u800c\u662f\u63d0\u51fa\u89e3\u51b3\u65b9\u6848\u3002
Quote
'Programmers have a pavlovian engineering response. Pose them a problem and they'll start trying to solve it.' One of the truest statements I've read in a long while. (Learning when not to solve a problem is one of the hardest things I've learnt.)
\u8fd9\u662f\u4e0b\u9762\u7684\u7b2c\u4e00\u6761\u8bc4\u8bba\uff0c\u770b\u5b8c\u76f4\u63a5\u6ca1\u7ef7\u4f4f\uff0c\u7279\u522b\u662f\u62ec\u53f7\u91cc\u7684\u5410\u69fd\uff0c\u6bcf\u4e2a\u7406\u5de5\u7537\u770b\u5b8c\u90fd\u4f1a\u4f1a\u5fc3\u4e00\u7b11\u7684\u3002
","tags":["\u8da3\u4e8b"]},{"location":"code/","title":"Index","text":"\u4e00\u4e9b\u5173\u4e8e\u300a\u795e\u7ecf\u7f51\u7edc\u4e0e\u6df1\u5ea6\u5b66\u4e60\u300b\u7684\u7b14\u8bb0
\u4e66\u4e2d\u5bf9\u6574\u672c\u4e66\u7684\u7ed3\u6784\u5982\u4e0b\uff0c\u5f53\u4e0d\u77e5\u9053\u5728\u5b66\u4ec0\u4e48\u7684\u65f6\u5019\uff0c\u53ef\u4ee5\u770b\u4e00\u4e0b\u8fd9\u4e2a\u56fe
\u5bf9\u4e8e\u4eba\u6765\u8bf4\uff0c\u4e0a\u9762\u4e24\u4e2a\u8fc7\u7a0b\u901a\u8fc7\u5927\u8111\u7684\u795e\u7ecf\u7f51\u7edc\u548c\u795e\u7ecf\u7a81\u89e6\u7684\u654f\u611f\u5ea6\u7684\u4fee\u6b63\u6765\u5b9e\u73b0\u3002 \u4f46\u5b9e\u9645\u7684\u751f\u7406\u8fc7\u7a0b\u8981\u66f4\u4e3a\u590d\u6742\u3002
Note
\u77e5\u4e4e\u5173\u4e8e\u4eba\u662f\u600e\u4e48\u5b9e\u73b0\u5b66\u4e60\u7684\u8ba8\u8bba\uff0c\u6211\u89c9\u5f97\u5f88\u6709\u610f\u4e49
","tags":["Neural Network","Deep Learning"]},{"location":"code/nndl/#_3","title":"\u7b80\u5355\u5f15\u4f8b","text":"\u6839\u636e\u673a\u5668\u5b66\u4e60\u7684\u4e09\u4e2a\u57fa\u672c\u8981\u7d20\uff1a
graph LR\n A[\u6a21\u578b] --> B[\u5b66\u4e60\u51c6\u5219];\n B --> C[\u4f18\u5316\u7b97\u6cd5];\n C-->A;
\u6211\u60f3\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\uff0c\u5224\u65ad(0.5,3)\u5728\u54ea\u6761\u659c\u7387\u4e3a1\u7684\u7ebf\u4e0a graph LR\n direction LR\n C[\"\u4e8c\u7ef4\u5750\u6807\u70b9(0.5,3)\"]-->A[\u6a21\u578b\uff1ay=x+5]; \n A--> B[\"\u8f93\u51fa\uff1a5.5\"];\n
graph LR\n D[\"\u4e8c\u7ef4\u5750\u6807\u70b9(0.5,3)\"]-->E[\u6a21\u578b\uff1ay=x+5]; \n E--> F[\"\u8f93\u51fa\uff1a5.5\"];\n F--> G[\u5b66\u4e60\u51c6\u5219\uff1a\u4f5c\u5dee,5.5-3=2.5];\n G--> H[\u4f18\u5316\u7b97\u6cd5\uff1a\u5f25\u8865\u5dee: y=x+5-2.5];\n H-->E;\n
graph LR\n A[\"\u4e8c\u7ef4\u5750\u6807\u70b9(0.5,3)\"]-->B[\u6a21\u578b\uff1ay=x+2.5]; \n B--> C[\"\u8f93\u51fa\uff1a3\"];\n C--> G[\u5b66\u4e60\u51c6\u5219\uff1a\u4f5c\u5dee,3-3=0];\n
\u4e0a\u9762\u4e09\u4e2a\u6b65\u9aa4\u5c55\u793a\u4e09\u4e2a\u57fa\u672c\u8981\u7d20\u7684\u57fa\u672c\u5173\u7cfb\u3002\u4f46\u8fd9\u91cc\u53ea\u7528\u4e86\u4e00\u6b21\u5b66\u4e60\u5c31\u83b7\u5f97\u4e86\u6700\u4f73\u7ed3\u679c\uff0c \u5b9e\u9645\u95ee\u9898\u5f80\u5f80\u662f\u9700\u8981\u591a\u6b21\u5b66\u4e60\u6765\u903c\u8fd1\u771f\u5b9e\u6a21\u578b\u7684\u3002","tags":["Neural Network","Deep Learning"]},{"location":"code/nndl/#_4","title":"\u5177\u4f53\u95ee\u9898\u5177\u4f53\u5206\u6790","text":"","tags":["Neural Network","Deep Learning"]},{"location":"game/","title":"Game","text":"\u6211\u5728\u73a9\u73a9\u8fc7 \u975e\u5e38\u826f\u5fc3\u7684\u6e38\u620f\uff0c\u9664\u4e86\u4e0d\u597d\u73a9\u54ea\u91cc\u90fd\u597d\uff0c\u6da9\u6da9\u662f\u6700\u201c\u5927\u201d\u7684\u7279\u70b9\u3002
\u4e5f\u662f\u5f88\u597d\u7684\u6e38\u620f\uff0c\u5728\u5854\u9632\u4e8c\u6e38\u4e2d\u662f\u5f00\u62d3\u6027\u4e14\u72ec\u4e00\u6863\uff0c\u4e00\u76f4\u5728\u521b\u65b0
\u5982\u679c\u4f60\u559c\u6b22\u52a8\u4f5c\u6e38\u620f\uff0c\u4f60\u5c31\u4e00\u5b9a\u80fd\u770b\u5230\u5b83\u7684\u52a8\u4f5c\u548c\u7f8e\u672f\u8bbe\u8ba1\u7684\u95ea\u5149\u70b9\u3002\u542c\u53d6\u73a9\u5bb6\u610f\u89c1\uff0c\u4e00\u76f4\u5728\u6539\u8fdb\uff0c\u5c0f\u5c0f\u5de5\u4f5c\u5ba4\u80fd\u5c55\u73b0 \u51fa\u8fd9\u4e48\u591a\u7684\u66f4\u65b0\uff0c\u5f88\u62c5\u5fc3\u4ed6\u4eec\u7684\u809d\u3002
\u89d2\u8272\u5f88\u53ef\u7231\uff0c\u7f8e\u672f\u4e0d\u9519\uff0c\u4e5f\u4e0d\u6c2a\uff0c\u4ec5\u6b64\u800c\u5df2\u3002\u516c\u4f1a\u6218\u8bd7\u4eba\u63e1\u6301
\u6bd4\u516c\u4e3b\u8fde\u7ed3\u597d\u4e00\u70b9\uff0c\u89d2\u8272\u8bbe\u8ba1\u5f88\u597d\uff0c\u5267\u60c5\u4e5f\u53ef\u5708\u53ef\u70b9\uff08\u4e3a\u6570\u4e0d\u591a\u770b\u8fc7\u5267\u60c5\u7684\uff09\uff0c\u5c31\u662f\u6709\u70b9\u6c2a\uff08\u6ca1\u6c2a\u8fc7\u4e00\u5206\u5c31\u662f\u4e86\uff09\uff0c \u5f88\u65e0\u804a\uff0c\u611f\u89c9\u5c31\u662f\u516c\u4e3b\u8fde\u7ed3\u8fd9\u6837\u7684\u9ad8\u914d\u7248\u3002
\u753b\u9762\u5bf9\u5f53\u65f6\u7684\u6211\u771f\u7684\u65f6\u4e0d\u5c0f\u7684\u9707\u64bc\uff0c\u5404\u79cd\u65b0\u5947\u7684\u70b9\u5b50\u975e\u5e38\u6709\u610f\u601d\u3002\u81f3\u5c11\u6211\u5bf9\u5b83\u7684\u8bc4\u4ef7\u662f\u5f88\u9ad8\u7684
\u5c0f\u5b66\u65f6\u671f\u4ee3\u8868\uff0c\u540c\u65f6\u671f\u7684\u67094399\uff0c\u8d5b\u5c14\u53f7\uff0c\u9020\u68a6\u897f\u6e38\uff0c\u6469\u5c14\u5e84\u56ed
\u521d\u4e2d\u65f6\u671f\u7684\u4ee3\u8868\uff0c\u8fd8\u8bb0\u5f97\u4ee5\u524d\u7528\u4e91\u6e38\u620f\u73a9\u4e86\u65e0\u4e3b\u4e4b\u5730
\u4f9d\u7136\u8bb0\u5f97\u5f53\u65f6\u4e0b\u8f7dLOL\uff0c\u5e76\u7b2c\u4e00\u6b21\u73a9\u8fd9\u79cd\u5927\u578b\u7f51\u6e38\u7684\u5fc3\u60c5
\u6ee1\u660f\uff0c\u54ea\u6015\u6211\u4e0d\u73a9\u4e86\uff0c\u6211\u5bf9\u5b83\u7684\u8bc4\u4ef7\u4e5f\u662f\u6700\u9ad8\u7684\uff0c\u5f53\u65f6\u4e8c\u6e38\u5e02\u573a\u5361\u724c\u76db\u884c\uff0c\u5d29\u5d29\u5bf9\u6211\u6765\u8bf4\u5c31\u662f\u964d\u7ef4\u6253\u51fb\uff0c \u4e16\u754c\u89c2\uff0c\u7f8e\u672f\uff0c\u53ef\u73a9\u6027\uff0c\u5728\u6211\u5fc3\u91cc\u90fd\u662f\u9876\u7ea7\u3002\u5207\u52ff\u4ee5\u5982\u4eca\u7684\u773c\u5149\u770b\u8fd9\u4e2a\u8fc7\u53bb\u7684\u4f5c\u54c1\u3002
\u624b\u673a\u52a8\u4f5c\u6e38\u620f\u5bf9\u5f53\u65f6\u7684\u6211\u4e5f\u662f\u964d\u7ef4\u6253\u51fb\uff0c\u753b\u9762\uff0c\u7f8e\u672f\uff0c\u52a8\u4f5c\uff0c\u90fd\u975e\u5e38\u9707\u60ca\u6211\u3002\u552f\u4e00\u7684\u7f3a\u70b9\u4fbf\u662f\u6c2a\u91d1\uff0c\u4ece\u6b64\u57cb\u4e0b\u4e86\u7c73\u6c60\u7684\u4f0f\u7b14
\u5f00\u670d\u65f6\u975e\u5e38\u9707\u60ca\uff0c\u753b\u9762\uff0c\u7f8e\u672f\uff0c\u73a9\u6cd5\uff0c\u540c\u6837\u4e5f\u662f\u964d\u7ef4\u6253\u51fb\uff0c\u4f46\u662f\u62bd\u5361\u5f88\u4ee4\u4eba\u7834\u9632
\u53ef\u524d\u5f80wiki\u53c2\u8003
\u56f0\u96be\u6ee1\u961f\u5237\u7ecf\u9a8c\uff0c\u666e\u901a\u548c\u7b80\u5355\u4f4e\u8017
\u56f0\u96be\u666e\u901a/\u7b80\u5355Note
\u8981\u70b9\uff0c\u654c\u4eba\u4e3a\u4e2d\u7532\uff0c\u56e0\u6b64
\u7a81\u51fb\u8005+\u5361/\u5510\uff0c\u6216\u8005\u4e24\u4e2a\u90fd\u5e26\uff0c\u6700\u597d\u7684\u90fd\u5e26\u4e0a\uff0c\u5305\u4e0d\u6b7b\u7684
"},{"location":"game/azurLane/page_1/","title":"\u5927\u4e16\u754c\u961f\u4f0d\u914d\u7f6e","text":"","tags":["blhx"]},{"location":"game/azurLane/page_1/#for","title":"for \u8001\u54b8\u9c7c","text":"\u914d\u88c51\uff08\u6843\u4e4b\u592d\u592d\uff09\u914d\u88c52\uff08\u9eef\u7136\uff09\u7eaf\u901f\u5237\u961f\u914d\u7f6e
Tip
\u914d\u5408Alas\u4ee5\u53ca\u201c\u9eef\u7136\u201d\u7684\u914d\u7f6e\u4f7f\u7528, \u7b2c\u4e00\u961f2\u5976\u5988\u5e26\u4e00\u5806100\u7ea7\u4e00\u4e0b\u7ec3\u7ea7 \u7b2c\u4e8c\u961f\u5237\u5176\u4ed6\u6d77\u57df\uff0c\u901f\u5237
","tags":["blhx"]},{"location":"game/azurLane/page_2/","title":"\u811a\u672c","text":"\u89e3\u653e\u751f\u4ea7\u529b\uff0c\u89e3\u653e\u53cc\u624b
","tags":["blhx"]},{"location":"game/azurLane/page_2/#alas","title":"Alas","text":"\u53bb\u4e0b\u8f7d
Tip
\u6211\u63a8\u8350\u6240\u6709\u4eba\u81ea\u5df1\u9605\u8bfb\u4f7f\u7528\u65b9\u6cd5\u548c\u914d\u7f6e\u65b9\u6cd5\u3002
\u4e0b\u9762\u662f\u4e00\u4e9b\u914d\u7f6e\uff0c\u53ef\u4ee5\u770b\u60c5\u51b5\u914d\u7f6e\uff1a
\u4f5c\u8005 \u66f4\u65b0\u65f6\u95f4 \u4e0b\u8f7d \u9eef\u7136 2025\u5e741\u67087\u65e5","tags":["blhx"]},{"location":"music/","title":"\u97f3\u4e50","text":"\u97f3\u4e50\u5728\u6211\u7684\u751f\u6d3b\u4e2d\u4e0d\u53ef\u6216\u7f3a
\u5929\u5929\u90fd\u5728\u201c\u8d1d\u65af\u7b11\u8bdd\u201d\uff0c\u4f46\u6bcf\u4e2a\u4e50\u961f\u8d1d\u65af\u53c8\u662f\u4e0d\u53ef\u6216\u7f3a\u7684\u5b58\u5728\u3002 \u5728\u8fd9\u91cc\u6211\u5206\u4eab\u4e00\u4e9b\u4f4e\u97f3\u6781\u5176\u51fa\u8272\uff0c\u6781\u5176\u4eae\u773c\u7684\u6b4c\u66f2
\u300a\u7121\u8d23\u4efb\u96c6\u5408\u4f53\u300b Movie, Music\uff1a\u30de\u30b5\u30e9\u30c0 Vocal: \u91cd\u97f3\u30c6\u30c8SV
\u30de\u30b5\u30e9\u30c0\u662f\u4e00\u4f4d\u521a\u51fa\u9053\u7684p\u4e3b \u8fd9\u9996\u6b4c\u662f\u5176\u7b2c4\u9996\u66f2\u5b50\uff0c\u5728\u8fd9\u9996\u6b4c\u91cc\uff0cbass\u6210\u4e3a\u4e3b\u8c03\uff0c\u8282\u594f\u611f\u6781\u5f3a\uff0c\u914d\u5408MV\u6781\u5177\u611f\u67d3\u529b\u3002
\u300a\u30d5\u30a1\u30f3\u30c8\u30de\u30a4\u30ba\u300b Music , Lyrics , Arrangement : \u30a8\u30cf\u30e9\u30df\u30aa\u30ea Illustration : \u6cbc\u7530\u30be\u30f3\u30d3 Vocal: Such
\u6bd4\u8f83\u51b7\u95e8\u7684\u6b4c\u66f2\uff0c\u4f46\u662f\u6211\u4e00\u542c\u5c31\u559c\u6b22\u4e0a\u4e86\uff0c \u4f4e\u97f3\u7684\u9f13\u70b9\u975e\u5e38\u6293\u8033\uff0c\u5bf9\u6bd4\u6ca1\u6709\u4f4e\u97f3\u9f13\u70b9\u548c\u6709\u4f4e\u97f3\u9f13\u70b9\u7684\u90e8\u5206\uff0c \u53ef\u4ee5\u53d1\u73b0\u975e\u5e38\u660e\u663e\u7684\u533a\u522b\u3002
\u4e0b\u9762\u662f\u4e00\u4e9b\u76f8\u5173\u6807\u7b7e\u7684\u5217\u8868:
"},{"location":"tags/#algorithm","title":"Algorithm","text":"\u4f60\u53ef\u80fd\u611f\u5174\u8da3\u7684
\u4e00\u4e9b\u6709\u7528\u7684\u6587\u7ae0\uff08\u5b58\u7591\uff09
\u53bb\u770b\u770b
\u5173\u4e8e\u6211
\u6211\u662f\u4e2a...\u4eba\uff1f
\u4e86\u89e3\u4e00\u4e0b
\u6211\u7684\u8db3\u8ff9
\u4fdd\u6301\u5bf9\u8fd9\u4e2a\u4e16\u754c\u7684\u597d\u5947\u5fc3
\u65bd\u5de5\u4e2d
\u7ed9\u6211\u4e5f\u6574\u4e00\u4e2a
\u5982\u679c\u60a8\u8ba4\u540c\u6211\u7684\u535a\u5ba2\u8bbe\u8ba1\uff0c\u53ef\u4ee5\u4ece\u8fd9\u91cc\u5feb\u901f\u90e8\u7f72
\u5f00\u6574
\u8bb0\u5f55\u4e00\u4e9b\u6709\u7528\u7684MkDocs\u7684\u64b0\u5199\u8bed\u6cd5\uff0c\u6280\u5de7\u7b49\uff0c\u968f\u65f6\u67e5\u9605\u3002\u4e3b\u8981\u8bb0\u5f55\u4e00\u4e9b\u6211\u7528\u8fc7\u6216\u8005\u89c9\u5f97\u6709\u7528\u7684\u4e00\u4e9b\u8bed\u6cd5\uff0c\u6bd5\u7adf\u5e76\u4e0d\u662f\u8d8a\u591a\u8d8a\u597d\u3002
Info
\u672c\u6587\u6240\u8ff0\u8bed\u6cd5\u5e76\u4e0d\u662f\u57fa\u672cMarkDown\u8bed\u6cd5\uff0c\u5176\u4f9d\u8d56\u4e8e\u5404\u79cd\u6269\u5c55\uff0c\u8bf7\u5728\u52a0\u8f7d\u5bf9\u5e94\u6269\u5c55\u540e\u518d\u4f7f\u7528
","tags":["Test"]},{"location":"Doc_skill/#admonitions","title":"\u8b66\u544a(Admonitions)","text":"\u8be6\u60c5\u8bf7\u67e5\u9605\u539f\u6587\u3002
\u5f15\u7528
\u4eba\u751f\u4e09\u95ee\uff0c\u6211\u662f\u8c01\uff0c\u6211\u4ece\u54ea\u91cc\u6765\uff0c\u6211\u5230\u54ea\u91cc\u53bb\u3002 \u2014\u2014from \u6c11\u95f4
\u52a8\u624b\u505a\u4e00\u505a\u5427\u6bd4\u8d77\u201c\u4f8b\u5b50\u201d\u8fd9\u4e2a\u89e3\u91ca\uff0c\u6211\u89c9\u201c\u52a8\u624b\u505a\u4e00\u505a\u201d\u8fd9\u4e2a\u66f4\u9002\u5408\uff0c\u5c31\u50cf\u8bfe\u540e\u4e60\u9898\u4e00\u6837
\u63d0\u793a
\u539f\u6587 \u6709\u5f88\u591a\u53ef\u4ee5\u8868\u793a\u63d0\u793a\u7684\u683c\u5f0f\uff0c\u6682\u65f6\u89c9\u5f97\u8fd9\u4e2a\u66f4\u597d\u4e00\u70b9\u3002
","tags":["Test"]},{"location":"Doc_skill/#emojisbuttons","title":"\u8868\u60c5(Emojis)\u548c\u6309\u94ae(Buttons)","text":"[\u524d\u5f80\u641c\u7d22emoji :octicons-search-16:][tab_1]{ .md-button }\n\n[tab_1]: https://squidfunk.github.io/mkdocs-material/reference/icons-emojis/#search\n
\u524d\u5f80\u641c\u7d22emoji
","tags":["Test"]},{"location":"Doc_skill/#annotations","title":"\u6ce8\u91ca(Annotations)","text":"See more (1)
Annotations
\u4ee3\u7801\u4e2d\u7684Annotations:
theme:\n features:\n - content.code.annotate # (1)!\n
# (1)!
``` py title=\"bubble_sort.py\"\ndef bubble_sort(items):\n for i in range(len(items)):\n for j in range(len(items) - 1 - i):\n if items[j] > items[j + 1]:\n items[j], items[j + 1] = items[j + 1], items[j]\n```\n
","tags":["Test"]},{"location":"Doc_skill/#_2","title":"\u52a0\u884c\u53f7","text":"``` py linenums=\"1\"\ndef bubble_sort(items):\n for i in range(len(items)):\n for j in range(len(items) - 1 - i):\n if items[j] > items[j + 1]:\n items[j], items[j + 1] = items[j + 1], items[j]\n```\n
","tags":["Test"]},{"location":"Doc_skill/#_3","title":"\u884c\u9ad8\u4eae","text":"LinesLine ranges Code block with highlighted lines``` py hl_lines=\"2 3\"\ndef bubble_sort(items):\n for i in range(len(items)):\n for j in range(len(items) - 1 - i):\n if items[j] > items[j + 1]:\n items[j], items[j + 1] = items[j + 1], items[j]\n```\n
def bubble_sort(items):\n for i in range(len(items)):\n for j in range(len(items) - 1 - i):\n if items[j] > items[j + 1]:\n items[j], items[j + 1] = items[j + 1], items[j]\n
Code block with highlighted line range``` py hl_lines=\"3-5\"\ndef bubble_sort(items):\n for i in range(len(items)):\n for j in range(len(items) - 1 - i):\n if items[j] > items[j + 1]:\n items[j], items[j + 1] = items[j + 1], items[j]\n```\n
def bubble_sort(items):\n for i in range(len(items)):\n for j in range(len(items) - 1 - i):\n if items[j] > items[j + 1]:\n items[j], items[j + 1] = items[j + 1], items[j]\n
","tags":["Test"]},{"location":"Doc_skill/#iconapi","title":"\u83b7\u53d6\u7f51\u9875ICON\u7684api","text":"favicone
<!-- example -->\nhttps://favicone.com/google.com\n
https://0x3.com/ <!-- example -->\nhttps://0x3.com/icon?host=www.bilibili.com\n
","tags":["Test"]},{"location":"about/","title":"\u5173\u4e8e\u6211","text":"\u4eba\u751f\u4e09\u95ee
\u4eba\u751f\u4e09\u95ee\uff0c\u6211\u662f\u8c01\uff0c\u6211\u4ece\u54ea\u91cc\u6765\uff0c\u6211\u5230\u54ea\u91cc\u53bb\u3002 \u2014\u2014from \u6c11\u95f4
\u4eba\u751f\u4e09\u554f\uff0c\u4eba\u70ba\u4f55\u800c\u6d3b\uff1f\u61c9\u5982\u4f55\u751f\u6d3b\uff1f\u53c8\u61c9\u5982\u4f55\u624d\u80fd\u6d3b\u51fa\u61c9\u6d3b\u51fa\u7684\u751f\u547d\uff1f \u2014\u2014from \u53f0\u6e7e\u5927\u5b66 \u5b6b\u6548\u667a
\u6839\u636e\u516c\u5b89\u90e8\u4fbf\u6c11\u670d\u52a1\u63d0\u4f9b\u6570\u636e\uff0c\u622a\u6b622024/12/24\uff0c\u5171\u6709216\u540d\u7537\u6027\uff0c16\u540d\u5973\u6027\u4e0e\u6211\u540c\u540d\u3002
\u5176\u5b9e\u4ece\u672a\u7528\u8fc7Windows Vista\uff0c\u6700\u65e9\uff0c\u7528\u7684\u6700\u591a\u7684\u4e5f\u5c31\u662fXP\u3002
\u7231\u6298\u817e\uff0c\u6709\u65f6\u5019\u4f1a\u56e0\u4e3a\u4e00\u4e2a\u5c0f\u95ee\u9898\u800c\u7279\u610f\u53bb\u6298\u817e\uff0c \u6bd4\u5982\u6700\u8fd1\u5728\u7528latex\u5199\u6bd5\u4e1a\u8bba\u6587\uff0c\u56e0\u4e3a\u5accwindows\u5e73\u53f0\u7f16\u8bd1\u6162\uff0c \u7279\u610f\u7528\u8001\u7b14\u8bb0\u672c\u88c5\u4e86\u4e00\u4e2aUbuntu\uff0c\u610f\u5916\u7684\u597d\u7528\u3002
\u521b\u5efa\u8fd9\u4e2a\u7f51\u7ad9\u65f6\uff0c\u60f3\u505a\u4e00\u4e2a\u7ffb\u8f6c\u5934\u50cf\u7684\u6548\u679c\uff0c\u4f46\u56e0\u4e3a\u4e0d\u61c2html\uff0c \u67e5\u9605\u5404\u79cd\u8d44\u6599\uff08\u5305\u62ecGPT\uff09\uff0c\u6700\u7ec8\u5f04\u51fa\u6765\u4e86\u3002
Note
\u6211\u5f88\u559c\u6b22\u7f16\u7a0b\u3002\u6211\u7684\u6bcd\u4eb2\u662f\u4e00\u4f4d\u8ba1\u7b97\u673a\u8001\u5e08\uff0c\u53d7\u5230\u5979\u7684\u5f71\u54cd\uff0c \u51fa\u751f\uff08\u751a\u81f3\u662f\u51fa\u751f\u524d\uff09\u5c31\u63a5\u89e6\u8ba1\u7b97\u673a\uff0c\u521d\u4e2d\u63a5\u89e6\u7b2c\u4e00\u95e8\u8bed\u8a00\uff0cC\u8bed\u8a00\u3002 \u4f46\u6211\u5e76\u4e0d\u662f\u79d1\u73ed\u51fa\u8eab(1)\uff0c\u5b66\u7684\u6bd4\u8f83\u6742\u3002
\u6211\u6700\u65e9\u63a5\u89e6\u7684\u662fC\u8bed\u8a00\uff0c\u540e\u9762\u5d4c\u5165\u5f0f\u73a9\u7684\u591a\uff0c\u4e5f\u6210\u4e86\u6211\u6700\u719f\u6089\u7684\u8bed\u8a00\u3002 \u7531\u4e8e\u662fOPP\u7f16\u7a0b\uff0c \u6211\u5230\u73b0\u5728\u4e5f\u8fd8\u4fdd\u7559\u4ee5\u8fc7\u7a0b\u4e3a\u4e3b\u7ebf\u7684\u7f16\u7a0b\u4e60\u60ef\u3002
\u8fd9\u4e5f\u5bfc\u81f4\u6211\u6700\u521d\u65e0\u6cd5\u7406\u89e3OOP\u7f16\u7a0b\uff0c \u62bd\u8c61\u7a0b\u5ea6\u8fc7\u9ad8\u5bfc\u81f4\u7684\u9ed1\u76d2\u6548\u5e94\uff0c \u5404\u79cd\u4f9d\u8d56\u5d4c\u5957\uff0c\u8ba9\u6211\u5f88\u6050\u614c\u3002
\u4f46\u6bd5\u7adf\u662f\u65f6\u4ee3\u7684\u53d1\u5c55\uff0c\u4f5c\u4e3a\u7a0b\u5e8f\u5458\u600e\u4e48\u80fd\u4e0d\u8ddf\u7d27\u65f6\u4ee3\u7684\u811a\u6b65\u5462
DIY\uff0c\u5373Do It Yourself\uff0c\u81ea\u5df1\u52a8\u624b\uff0c\u4e30\u8863\u8db3\u98df\u3002
\u6211\u662f\u5b9e\u8df5\u6d3e\uff0c\u601d\u8003\u7406\u8bba\u82b1\u8d39\u6211\u66f4\u591a\u65f6\u95f4\u3002
\u6211\u662f\u4e00\u4e2aINFJ\uff0c \u559c\u6b22\u601d\u8003\uff0c\u559c\u6b22\u5206\u6790\uff0c\u559c\u6b22\u603b\u7ed3\u3002\u8eab\u8fb9\u7684INFJ\u8fd8\u633a\u591a\uff0c\u6bd4\u5982\u53f3\u8fb9\u53cb\u60c5\u94fe\u63a5\u4e2d\u7684\u5f20\u6768\u540c\u5b66
\u559c\u6b22\u4e8c\u6b21\u5143\uff0c\u9b3c\u755c\uff0c\u5404\u79cd\u4e9a\u6587\u5316\uff0c \u6df7\u8ff9\u4e8ebilibili\uff0c\u97f3\u4e50\uff0c\u6e38\u620f\uff0c\u4ee3\u7801\u7b49\uff0c\u4e00\u53f0\u7535\u8111\u5c31\u591f\u6211\u5728\u623f\u95f4\u91cc\u73a9\u4e0a\u4e00\u6574\u5929
\u78a7\u84dd\u822a\u7ebf\u8d44\u6df1\u73a9\u5bb6\uff0c\u5f00\u670d\u73a9\u5230\u73b0\u5728\uff0c\u62c5\u4efb\u8230\u957f\uff0c\u5927\u5c31\u662f\u597d
\u660e\u65e5\u65b9\u821f\u8001\u73a9\u5bb6\uff0c\u6284\u4f5c\u4e1a\u73a9\u5bb6\uff0c\u4e0d\u73a9\u8089\u9e3d
\u96f6\u6c2a\u7edd\u8d5e\u8fdb\u884c\u4e2d
\u7965\u4e91\u53bf\u5357\u4eac\u4fe1\u606f\u5de5\u7a0b\u5927\u5b66\u5357\u4eac\u7406\u5de5\u5927\u5b66\u798f\u5ca1\u5de5\u696d\u5927\u5b66\u8001\u5bb6\u4e91\u5357\u5927\u7406\u7684\u7965\u4e91\u53bf\uff0c\u662f\u4e00\u4e2a\u5c0f\u53bf\u57ce\uff0c \u4e0e\u5927\u7406\u5e02\u76f8\u90bb\uff0c\u662f\u901a\u5f80\u6ec7\u897f\u5730\u533a\u7684\u5173\u9698\u4e4b\u5730\u3002
\u4e91\u5357\u4e4b\u6e90
\u7965\u4e91\u53bf\u5386\u53f2\u60a0\u4e45\uff0c\u897f\u6c49\u5143\u5c01\u4e8c\u5e74\uff08\u524d109\u5e74\uff09\u8bbe\u53bf\uff0c\u540d\u4e91\u5357\u53bf\uff0c\u662f\u4e91\u5357\u7701\u540d\u7684\u8d77\u6e90\u5730\uff0c\u6709\u201c\u4e91\u5357\u4e4b\u6e90\u201d\u201c\u5f69\u4e91\u4e4b\u4e61\u201d\u7684\u8a89\u79f0\uff0c\u66fe\u7ecf\u957f\u671f\u4e3a\u6ec7\u897f\u5317\u7684\u653f\u6cbb\u3001\u7ecf\u6d4e\u548c\u6587\u5316\u4e2d\u5fc3\u30021918\u5e74\uff0c\u4e3a\u514d\u7701\u53bf\u540c\u540d\uff0c\u4e91\u5357\u53bf\u6539\u79f0\u7965\u4e91\u53bf\u3002\u2014\u2014from wiki
\u6bcf\u4e2a\u7965\u4e91\u4eba\u90fd\u7231\u901b\u7684\u5730\u65b9\u2014\u2014\u949f\u9f13\u697c \u4f5c\u8005\uff1aKcx36
\u672c\u79d1\u6bcd\u6821\uff0c\u5e94\u7528\u7269\u7406\u4e13\u4e1a\uff0c4\u5e74\u8fc7\u7684\u975e\u5e38\u201c\u8282\u80fd\u201d\uff08\u5c31\u50cf\u51b0\u83d3\u91cc\u7684\u6298\u6728\u5949\u592a\u90ce\uff09\uff0c\u6ca1\u6302\u8fc7\u79d1\uff0c\u6210\u7ee9\u4e5f\u662f\u4e2d\u7b49\u504f\u4e0a\uff0c \u4f46\u4e5f\u6ca1\u505a\u4ec0\u4e48\u7279\u522b\uff0c\u6ca1\u4ec0\u4e48\u6210\u679c\u3002\u611f\u89c9\u6700\u53d7\u76ca\u7684\u662f\u9ad8\u6570\uff0c\u5149\u5b66\uff0c\u7269\u7406\u5b66\uff0c\u7535\u8def\uff0c\u5d4c\u5165\u5f0f
\u5b66\u6821\u867d\u7136\u662f\u53cc\u975e\uff0c\u4f46\u6211\u4f9d\u7136\u611f\u6fc0\u8001\u5e08\u548c\u540c\u5b66\uff0c\u8fd8\u6709\u996d\u5802\u3002 \u7279\u522b\u662f\u8ba9\u6211\u7ed3\u8bc6\u4e86\u51e0\u4f4d\u631a\u53cb\u3002
\u9760\u7740\u52aa\u529b\u8003\u4e0a\u5357\u7406\u5de5\u7684\u7814\u7a76\u751f\uff0c\u5fae\u7cfb\u7edf\u4e0e\u6d4b\u63a7\u6280\u672f(1)\u65b9\u5411\uff0c\u56e0\u4e3a\u6ca1\u4eba\u5f53\u8d39\u529b\u4e0d\u8ba8\u597d\u7684\u73ed\u957f\uff0c \u6211\u5c31\u6210\u4e3a\u4e86\u73ed\u957f\u3002\u4f46\u4e0a\u4e86\u534a\u5e74\u5c31\u6765\u65e5\u672c\u4e86\uff0c\u7ed3\u8bc6\u4e86\u6700\u597d\u7684\u5ba4\u53cb\u6768\u8301\u540c\u5b66\uff0c \u5728\u6211\u8eab\u5728\u4ed6\u4e61\u7684\u65f6\u5019\u5e2e\u4e86\u6211\u5f88\u591a\u5fd9\u3002
\u6545\u4e8b\u8fd8\u672a\u7ed3\u675f...
\u53c2\u52a0\u5357\u7406\u5de5\u7684\u53cc\u5b66\u4f4d\u9879\u76ee\uff0c\u5728\u65e5\u672c\u7559\u5b662\u5e74\uff08\u5357\u7406\u5de5\u4e5f\u5728\u7c4d\uff09
See more
\u5b8f\u89c2\u52a8\u753b\u6e38\u620f\u97f3\u4e50\u6211\u548c\u7236\u6bcd\uff1a\u300c\u4eba\u4e0d\u4e3a\u5df1\uff0c\u5929\u8bdb\u5730\u706d\u300d(1)\uff0c\u6211\u65e0\u6cd5\u4e3a\u81ea\u5df1\u7684\u81ea\u79c1\u8fa9\u9a73\uff0c \u4f46\u7236\u6bcd\u7ed9\u4e88\u4e86\u6211\u751f\u547d\uff0c\u5c06\u6211\u517b\u80b2\u6210\u4eba\uff0c\u5176\u6069\u60c5\u6211\u6050\u6015\u6211\u7528\u4e00\u751f\u90fd\u65e0\u6cd5\u507f\u8fd8\uff0c\u6240\u4ee5\u4e3a\u4e86\u4e0d\u8f9c\u8d1f\u4ed6\u4eec\uff0c \u6211\u5fc5\u987b\u6d3b\u4e0b\u53bb\u3002
\u6700\u5927\u7684\u7231\u597d\u4e4b\u4e00\uff0c\u827a\u672f\u5bf9\u6211\u6709\u5f3a\u5927\u7684\u5438\u5f15\u529b\uff0c\u52a8\u753b\u4e5f\u5305\u62ec\u5728\u5185\u3002\u867d\u7136\u73b0\u5728\u5df2\u7ecf\u57fa\u672c\u4e0d\u8ffd\u65b0\u756a\u4e86\uff0c\u4f46\u4f9d\u7136\u4f1a\u5173\u6ce8\u8bc4\u4ef7\u597d\u7684\u52a8\u753b\u4f5c\u54c1
\u5173\u4e8e\u52a8\u753b\u66f4\u591a\u7684\u8ba8\u8bba\uff0c\u53ef\u4ee5\u770b\u770bAnime\u677f\u5757
\u6700\u5927\u7684\u7231\u597d\u4e4b\u4e8c\uff0c\u4f46\u73a9\u7684\u6e38\u620f\u975e\u5e38\u5c11\u3002\u4ece4399\u5230\u8d5b\u5c14\u53f7\uff0c\u4ece\u8650\u6740\u539f\u578b\u5230LOL\uff0c \u4ece\u5d29\u574f\u5b66\u56ed2\u5230\u78a7\u84dd\u822a\u7ebf\uff0c\u4ece\u539f\u795e\u5230\u7edd\u533a\u96f6\u3002\u73b0\u5728\u73a9\u7684\u4e0d\u591a\u4e86
\u5173\u4e8e\u6e38\u620f\u66f4\u591a\u7684\u8ba8\u8bba\uff0c\u53ef\u4ee5\u770b\u770bGame\u677f\u5757
\u4ece\u5468\u6770\u4f26\uff0c\u9648\u5955\u8fc5\uff0c\u5230\u6b27\u7f8e\uff0c\u518d\u5230jpop\uff0c\u4ece\u6d41\u884c\u5230\u6447\u6eda\uff0c\u4ece\u53e4\u5178\u5230\u7535\u5b50\uff0c\u4ec0\u4e48\u90fd\u542c\u3002 \u53ea\u8981\u662f\u597d\u542c\u7684\u97f3\u4e50\uff0c\u6211\u90fd\u6765\u8005\u4e0d\u62d2\u3002
\u5173\u4e8e\u97f3\u4e50\u66f4\u591a\u7684\u8ba8\u8bba\uff0c\u53ef\u4ee5\u770b\u770bMusic\u677f\u5757
"},{"location":"about/#_2","title":"\u5173\u4e8e\u6211\u7684\u5934\u50cf","text":"\u6b63\u9762\u53cd\u9762\u7b97\u662f\u6211\u7f51\u7edc\u4e0a\u7684\u5e38\u7528\u5934\u50cf\u4e86\uff0c\u6765\u81ea\u7f51\u7edc\uff0c\u4f5c\u8005\u672a\u77e5\uff0c\u662f\u6211\u7684\u672c\u547d\u4f5c\u300a\u30ce\u30fc\u30b2\u30fc\u30e0\u30fb\u30ce\u30fc\u30e9\u30a4\u30d5\u300b\uff08\u4e2d\u6587\uff1a\u6e38\u620f\u4eba\u751f\uff09\u4e2d\u7684\u4e24\u4f4d\u4e3b\u89d2\u3002\u5173\u4e8e\u6211\u5bf9\u8fd9\u4e2a\u4f5c\u54c1\u7684\u8ba8\u8bba\uff0c\u53ef\u79fb\u6b65\u8be6\u60c5\u3002
\u65e5\u51fa\u4e4b\u65f6\u5230\u8fbe\u5bcc\u58eb\u5c71\u9876\uff0c\u5728\u706b\u5c71\u53e3\u62cd\u7684\u7167\uff0c\u5728bilibili\u6295\u7a3f\u4e86\u89c6\u9891
"},{"location":"template/","title":"Template","text":"\u8fd9\u662f\u4e00\u4e2a\u6807\u51c6\u6a21\u677f
this is a stander template
","tags":["Template"]},{"location":"test/","title":"Test","text":"Just a page for testing
"},{"location":"test/#pyscript-example","title":"PyScript Example","text":"\u4e0b\u9762\u662f\u4e00\u4e2a PyScript \u793a\u4f8b\uff1a
"},{"location":"world/","title":"\u8db3\u8ff9","text":"\u8fd9\u662f\u4e00\u4e2a\u6807\u51c6\u6a21\u677f
this is a stander template
","tags":["\u8db3\u8ff9"]},{"location":"anime/","title":"\u52a8\u753b","text":"\u65e5\u6587\u5047\u540d\u8bd1\u81eaNo Game No Life\uff08\u7b80\u5199\u4f5cngnl\uff09\u3002\u6211\u6700\u65e9\u4eceTV\u52a8\u753b\u5f00\u59cb\u63a5\u89e6\uff0c\u4e4b\u540e\u5f00\u59cb\u8bfb\u5c0f\u8bf4\uff0c\u540e\u9762\u53c8\u51fa\u4e86\u9707\u60ca\u5708\u5185\u7684\u5267\u573a\u7248\u3002TV\u52a8\u753b\u548c\u5267\u573a\u7248\u6211\u90fd\u662f\u975e\u5e38\u63a8\u8350\u7684\u4f73\u4f5c\u4e2d\u7684\u4f73\u4f5c\u3002
Note
\u4e4b\u6240\u4ee5\u53ea\u80fd\u7b97\u662f\u4f73\u4f5c\uff0c\u662f\u56e0\u4e3a\u5bf9\u4e8e\u52a8\u753b\u672c\u8eab\uff0c\u6211\u5fc3\u4e2d\u7684\u7b2c\u4e00\u540d\u5176\u5b9e\u662f\u300a\u4e52\u4e53\u300b\uff0c\u5173\u4e8e\u300a\u4e52\u4e53\u300b\u66f4\u591a\u7684\u8ba8\u8bba\uff0c\u53ef\u4ee5\u770b\u8fd9\u91cc\u3002
"},{"location":"anime/ngnl/#tv","title":"TV\u52a8\u753b","text":""},{"location":"anime/ngnl/#_2","title":"\u5267\u573a\u7248","text":""},{"location":"anime/ngnl/#_3","title":"\u5c0f\u8bf4","text":""},{"location":"blog/","title":"Blog","text":"BroadcastChannel\u80fd\u5c06Telegram\u516c\u5171\u9891\u9053\u8f6c\u4e3a\u7b80\u6613\u535a\u5ba2
\u6e90\uff1ahttps://treehole.lvista.site/
"},{"location":"blog/2025/01/08/site_build/","title":"\u81ea\u5efa\u4e3b\u9875\uff1a\u59cb","text":"\u4ece\u840c\u751f\u4e00\u4e2a\u5efa\u7ad9\u7684\u60f3\u6cd5\uff0c\u5230\u6210\u529f\u6784\u5efa\u4e00\u4e2a\u57fa\u672c\u6846\u67b6\u7684\u8fc7\u7a0b\u3002\u5177\u4f53\u505a\u6cd5\u5b98\u7f51\u7ed9\u7684\u5f88\u8be6\u7ec6\uff0c\u8fd9\u91cc\u53ea\u4f1a\u6307\u51fa\u4e00\u4e9b\u7279\u522b\u7684\u5730\u65b9
\u53c2\u8003
\u4e0d\u4e3a\u522b\u7684\uff0c\u5c31\u662f\u201c\u4ecb\u7ecd\u81ea\u6211\u201d\u3002\u5982\u679c\u662f\u4e3a\u4e86\u5206\u4eab\u4e00\u4e9b\u4e1c\u897f\uff0c\u5927\u53ef\u53bbCSDN(1)\u4e4b\u7c7b\u7684\u5730\u65b9\uff0c \u4e0d\u5fc5\u5728\u4e2a\u4eba\u4e3b\u9875\u4e0a\u5206\u4eab\u7ecf\u9a8c\uff0c\u8fd9\u6709\u6096\u4e92\u8054\u7f51\u7684\u201c\u5206\u4eab\u201d\u7cbe\u795e\u3002
Notion\u662f\u4e00\u4e2a\u5f88\u597d\u7684\u7b14\u8bb0\u8bb0\u5f55\u5e73\u53f0\uff0c\u529f\u80fd\u5f88\u5f3a\u5927\uff0c\u6211\u628a\u5f88\u591a\u8bb0\u5f55\u7684\u4e1c\u897f\u90fd\u653e\u5728\u8fd9\u91cc\uff0c \u4f46\u662f\u5e76\u4e0d\u80fd\u5b8c\u5168\u7684\u81ea\u5b9a\u4e49\uff0c\u5e76\u4e14\u66f4\u591a\u662f\u201c\u79c1\u6709\u201d\u7684\uff0c\u6240\u4ee5\u60f3\u5c06\u5176\u79fb\u690d\u5230\u4e2a\u4eba\u7f51\u7ad9\u4e0a\u3002
\u5bf9\u4e8e\u6211\u8fd9\u6837\u559c\u6b22\u6df7\u8ff9\u5728\u4e92\u8054\u7f51\uff0c\u89c6\u7535\u5b50\u8bbe\u5907\u4e3a\u201c\u6700\u4f73\u73a9\u5177\u201d\u7684\u4eba\u6765\u8bf4\uff0c \u4e2a\u4eba\u4e3b\u9875\u5c31\u662f\u6700\u597d\u7684\u540d\u7247\u3002\u901a\u8fc7\u8fd9\u6837\u7684\u201c\u540d\u7247\u201d\u6211\u7ed3\u5b9e\u4e86\u201c\u4e16\u53e6\u6211\u201d\u03a3\u5f20\u6768
","tags":["\u5efa\u7ad9","HTML","Material for MkDocs","Blog","\u4e2a\u4eba\u7f51\u7ad9"]},{"location":"blog/2025/01/08/site_build/#start-your-first-homepage","title":"Start your first homepage","text":"\u53ea\u9700\u8981\u9075\u4eceGetting-started \u6309\u7167\u987a\u5e8f\u4e00\u6b65\u6b65\u505a\u4e0b\u53bb\u5373\u53ef\u642d\u5efa\u5b8c\u6210\u7b2c\u4e00\u4e2aHP\uff0c\u4e4b\u540e\u5728GitHub Pages\u4e0a\u90e8\u7f72\u5373\u53ef\u3002\u52a8\u624b\u5b8c\u6210\u81f3Getting-started\u4e2d\u7684Publishing your site \u7ae0\u8282\u5373\u53ef\u5b8c\u6210\u57fa\u672c\u90e8\u7f72\u3002
\u5feb\u901f\u5b9e\u8df5\u4ee5\u4e0b\u4ec5\u4e3a\u201c\u6025\u6025\u56fd\u738b\u201d\u6216\u8005\u9700\u8981\u5c3d\u5feb\u642d\u5efa\u7684\u540c\u5b66\u7684\u53c2\u8003\uff0c\u5bf9\u4e8e\u5927\u591a\u6570\u4eba\uff0c \u4f9d\u7136\u5efa\u8bae\u6309\u7167Getting-started\u63d0\u4f9b\u7684\u6559\u7a0b\u8fdb\u884c.
pip install mkdocs-material
mkdocs.yml
\u4fee\u6539\u4ee5\u4e0b\u90e8\u5206(1): plugins:\n - search\n - blog:\n blog_toc: true\n archive_date_format: MMMM yyyy\n categories_allowed:\n - Holidays\n - News\n authors_profiles: true\n pagination_per_page: 5\n archive_pagination_per_page: 10\n categories_pagination_per_page: 10\n - tags\n
mkdocs serve
\u5373\u53ef\u5728\u672c\u5730\u6d4f\u89c8\u6548\u679cmkdocs build
\u521b\u5efa\u5305\u542bindex.html
\u7684\u7f51\u9875\u6587\u4ef6user.github.io
\u5373\u53ef\u770b\u5230\u7ed3\u679c\u66f4\u559c\u6b22\u6211\u7684\uff1f
\u5982\u679c\u60a8\u66f4\u559c\u6b22\u6211\u7684\uff0c\u53ef\u4ee5\u770b\u770b\u8fd9\u7bc7
GitHub Pages\u662f\u901a\u8fc7\u81ea\u52a8\u5bfb\u627e\u5f53\u524dBranch\u4e0a\u7684\u7684index.html
\u6765\u53d1\u5e03\u7f51\u9875\u7684\uff0c \u6240\u4ee5\u9700\u8981\u6ce8\u610frepo\u4e2d\u7684setting\u2192Pages\u2192Build and deployment\u4e0b\u7684Source\u8bbe\u7f6e\u662f\u5426\u662fDeploy from a branch\uff0c Branch\u662f\u5426\u8bbe\u7f6e\u4e3a\u7f16\u8bd1\u540e\u7684\u6587\u4ef6\u5206\u652f\uff0c\u8fd9\u4e2a\u8bbe\u7f6e\u5728\u540e\u9762\u4e5f\u4f1a\u63d0\u5230
\u4e3a\u4f55\u8981\u4f7f\u7528 GAW
GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that allows you to automate your build, test, and deployment pipeline. You can create workflows that build and test every pull request to your repository, or deploy merged pull requests to production.
from Publishing your site - Material for MkDocs
\u539f\u7406
\u4f7f\u7528 GAW \u6700\u5927\u7684\u597d\u5904\u5728\u4e8e\u5c06\u6e90\u6587\u4ef6\u548c\u7f16\u8bd1\u540e\u7684\u6587\u4ef6\u5e93\u5206\u5f00\u3002\u5e76\u4e14\u7f16\u8bd1\u5728 GAW \u4e0a\u5b8c\u6210\uff0c\u5bf9\u672c\u5730\u7f16\u8f91\u73af\u5883\u8981\u6c42\u964d\u4f4e\u4e86\u5f88\u591a\uff0c\u53ef\u4ee5\u5feb\u901f\u53d1\u5e03\u6587\u7ae0\u3002
\u539f\u7406\u5c31\u662f\u5c06\u7f16\u8bd1\u524d\u7684\u6587\u4ef6\u63a8\u9001\u5230Github\uff0cGithub\u4f1a\u6839\u636e.github\\workflows\\ci.yml
\u8fd0\u884c\u547d\u4ee4\uff0c \u5728\u8fd9\u91cc\u5c31\u662f\u5c06\u6587\u4ef6\u4e91\u7f16\u8bd1\u81f3gh-pages
\u5206\u652f\uff0c\u7136\u540eGithub Page\u4f1a\u5c55\u793agh-pages
\u5206\u652f\u7684\u7f51\u9875\u4ed3\u5e93\uff0c \u800c\u6e90\u6587\u4ef6\u5219\u5728main
\u5206\u652f\u4e2d\u3002
ci.yml
\u7684\u521b\u5efamkdocs.yml
\u7684\u6e90\u6587\u4ef6\u5e93\u63a8\u9001\u81f3main
\u5206\u652fSetting
->Pages
->Build and deployment
\u4e2d\uff0c\u5c06Branch
\u8bbe\u5b9a\u4e3agh-pages
\u5f53\u4f7f\u7528git-revision-date-localized \u6a21\u5757\u540e\uff0c\u5728 GAW \u8fd0\u884c\u65f6\u4f1a\u51fa\u73b0\u8fd9\u6837\u7684\u9519\u8bef\u3002\u8bf7\u4fee\u6539.github/workflows/ci.yml
\u5185\u5bb9\u5982\u4e0b\uff0c\u8ba9 GAW \u4e0b\u8f7d\u8be5\u6a21\u5757\uff1a
name: ci\non:\npush:\n branches:\n - main\npermissions:\ncontents: write\njobs:\ndeploy:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n - name: Configure Git Credentials\n run: |\n git config user.name github-actions[bot]\n git config user.email 41898282+github-actions[bot]@users.noreply.github.com\n - uses: actions/setup-python@v5\n with:\n python-version: 3.x\n - run: echo \"cache_id=$(date --utc '+%V')\" >> $GITHUB_ENV\n - uses: actions/cache@v4\n with:\n fetch-depth: 0\n key: mkdocs-material-${{ env.cache_id }}\n path: .cache\n restore-keys: |\n mkdocs-material-\n - run: pip install mkdocs-material\n - run: pip install mkdocs-git-revision-date-localized-plugin\n - run: mkdocs gh-deploy --force\n
","tags":["\u5efa\u7ad9","HTML","Material for MkDocs","Blog","\u4e2a\u4eba\u7f51\u7ad9"]},{"location":"blog/2025/01/08/site_build/#_2","title":"\u56fd\u5185\u8bbf\u95ee","text":"Note
\u8bf7\u786e\u8ba4\u5df2\u5728GitHub Pages\u4e0a\u90e8\u7f72\u597d\u7f51\u7ad9\u5e76\u53ef\u4ee5\u8bbf\u95ee\u3002
\u56fd\u5185\u8bbf\u95eeGitHub Pages\u63d0\u4f9b\u7684username.github.io
\u4f1a\u51fa\u73b0\u52a0\u8f7d\u6162\u7684\u60c5\u51b5\uff0cvercel \u4e4b\u7c7b\u7684\u5e73\u53f0\u4e5f\u65e0\u6cd5\u5728\u56fd\u5185\u8fdb\u884c\u8bbf\u95ee\uff0c\u6240\u4ee5\u5c31\u9700\u8981\u53e6\u5916\u4e00\u79cd\u65b9\u6cd5\u6765\u8fdb\u884c\u4ee3\u7406\u8bbf\u95ee\u3002\u8fd9\u91cc\u6211\u4eec\u4f7f\u7528\u57df\u540d+DNS\u89e3\u6790\u7684\u65b9\u6cd5\u3002
.site
\u57df\u540d\uff1blvista.site
\uff0c\u627e\u5230\u4e91\u89e3\u6790DNS
\u670d\u52a1\uff0c\u9009\u62e9\u65b0\u624b\u5feb\u901f\u89e3\u6790
username.github.io
\uff0c\u5c31\u80fd\u5f00\u542f\u514d\u8d39\u5957\u9910\u7248\u7684\u4e91\u89e3\u6790DNS\u670d\u52a1Setting
->Pages
-> Chustom domain
\u4e2d\u8f93\u5165\u57df\u540d\uff0c\u4fdd\u5b58\u5230\u6b64\u4e3a\u6b62\uff0c\u4f60\u5df2\u7ecf\u6210\u529f\u5b8c\u6210\u4ee5\u4e0b\u529f\u80fd\uff1a
\u606d\u559c\u4f60\uff0c\u4f60\u53c8\u8fdb\u6b65\u4e86\uff01\uff01
","tags":["\u5efa\u7ad9","HTML","Material for MkDocs","Blog","\u4e2a\u4eba\u7f51\u7ad9"]},{"location":"blog/2025/01/10/build_sim/","title":"\u7ed9\u6211\u4e5f\u6574\u4e00\u4e2a\uff01","text":"\u6574\u4e00\u4e2a\u4e0e\u672c\u7ad9\u7c7b\u4f3c\u7684\u7f51\u7ad9
\u9996\u5148\u8c22\u8c22\u9891\u5e55\u524d\u7684\u4f60\u5bf9\u6211\u7684\u8ba4\u540c\uff0c\u8bdd\u4e0d\u591a\u8bf4\uff0c\u5f00\u6574\uff01
","tags":["\u5efa\u7ad9","HTML","Material for MkDocs","Blog","\u4e2a\u4eba\u7f51\u7ad9"]},{"location":"blog/2025/01/10/build_sim/#_2","title":"\u51c6\u5907","text":"\u4e4b\u540e\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u5373\u53ef\u9884\u89c8
mkdocs serverTip
mkdocs server
\u8fd0\u884c\u540e\u4e0d\u4f1a\u81ea\u52a8\u4e2d\u6b62\u8fdb\u7a0b\uff0c\u4f7f\u7528Ctrl+C\u5373\u53ef\u5f3a\u884c\u7ec8\u6b62\u8fdb\u7a0b\u3002 \u8fdb\u7a0b\u5f00\u59cb\u540e\uff0c \u5927\u90e8\u5206 \u7684\u7f51\u9875\u7684\u4fee\u6539\u4f1a\u540c\u6b65\u8ddf\u65b0\u5230\u7f51\u9875\uff0c\u4e0d\u9700\u8981\u91cd\u65b0\u542f\u52a8\u3002
\u5927\u90e8\u5206\u8bbe\u7f6e\u53ef\u53c2\u8003Customization \u8fd9\u91cc\u5bf9\u6211\u52a0\u5165\u7684\u8fdb\u884c\u8bf4\u660e
","tags":["\u5efa\u7ad9","HTML","Material for MkDocs","Blog","\u4e2a\u4eba\u7f51\u7ad9"]},{"location":"blog/2025/01/10/build_sim/#_5","title":"\u9996\u9875\u5934\u50cf","text":"\u53ef\u4fee\u6539docs/index.md
\u4e2d\u7684\u56fe\u7247\u548c\u6587\u5b57
docs/index.md
docs/css/custom.css
<div class=\"flip-container\">\n<div class=\"image-container\">\n <!-- docs/assets/images/logo_noBG_circle.png -->\n <img src=\"https://s2.loli.net/2025/01/09/ve1piNRt6M5ycDQ.png\" alt=\"Front Image\">\n <a href=\"/template/\" >\n <!-- docs/assets/images/self_shoot.png -->\n <img src=\"https://s2.loli.net/2025/01/09/wOzTR9Kyfq2jMHo.png\" alt=\"Back Image\">\n </a>\n</div>\n<div class=\"hover-block\">\n \u70b9\u6211\u770b\u770b!\n</div>\n</div>\n
.flip-container {\n position: relative;\n width: 300px;\n height: 300px;\n margin: 10px auto;\n display: flex;\n align-items: flex-start;\n /* \u5bf9\u9f50\u9876\u90e8 */\n justify-content: flex-end;\n /* \u5c06\u6587\u5b57\u653e\u7f6e\u53f3\u4e0a\u89d2 */\n}\n\n/*more...*/\n
","tags":["\u5efa\u7ad9","HTML","Material for MkDocs","Blog","\u4e2a\u4eba\u7f51\u7ad9"]},{"location":"blog/2025/01/10/build_sim/#_6","title":"\u53cb\u60c5\u94fe\u63a5","text":"\u53ef\u4fee\u6539overrides/main.html
\u4e2d\u7684\u56fe\u7247\u548c\u94fe\u63a5
overrides/main.html
css/float_cards.css
mkdocs.yml
{% block site_nav %}\n<!-- Navigation -->\n{% if nav %}\n{% if page.meta and page.meta.hide %}\n{% set hidden = \"hidden\" if \"navigation\" in page.meta.hide %}\n{% endif %}\n<div class=\"md-sidebar md-sidebar--primary\" data-md-component=\"sidebar\" data-md-type=\"navigation\" {{ hidden }}>\n <div class=\"md-sidebar__scrollwrap\">\n <div class=\"md-sidebar__inner\">\n {% include \"partials/nav.html\" %}\n </div>\n </div>\n</div>\n\n{% endif %}\n\n<!-- Table of contents -->\n{% if \"toc.integrate\" not in features %}\n{% if page.meta and page.meta.hide %}\n{% set hidden = \"hidden\" if \"toc\" in page.meta.hide %}\n{% endif %}\n<div class=\"md-sidebar md-sidebar--secondary\" data-md-component=\"sidebar\" data-md-type=\"toc\" {{ hidden }}>\n <div class=\"md-sidebar__scrollwrap\">\n <div class=\"md-sidebar__inner\">\n {% include \"partials/toc.html\" %}\n </div>\n <div class=\"card-container\">\n <h3>\u53cb\u60c5\u94fe\u63a5</h3>\n <div class=\"card\">\n <div class=\"img-container\">\n <a href=\"https://yangzhang.site/\" target=\"_blank\">\n <img src=\"https://yangzhang.site/assets/images/summation.png\"\n style=\"width: 70%; height: 70%; object-fit: contain;\">\n </a>\n </div>\n <div class=\"content\">\n <a href=\"https://yangzhang.site/\" target=\"_blank\">\n <h3>yangzhang's Site</h3>\n </a>\n </div>\n </div>\n </div>\n\n </div>\n</div>\n{% endif %}\n{% endblock %}\n
.card-container {\nmargin: 50px 0 0 0;\ndisplay: flex;\nflex-flow: row wrap;\nflex-wrap: wrap;\nalign-content: flex-start;\ntext-align: center;\n}\n/*...see more */\n
extra_css:\n - css/float_cards.css\n
","tags":["\u5efa\u7ad9","HTML","Material for MkDocs","Blog","\u4e2a\u4eba\u7f51\u7ad9"]},{"location":"blog/2025/01/14/jp_home/","title":"Template","text":"\u8fd9\u662f\u4e00\u4e2a\u6807\u51c6\u6a21\u677f
this is a stander template
","tags":["\u7559\u5b66","\u65e5\u672c"]},{"location":"blog/2025/01/19/np_bc/","title":"Numpy\u4e2d\u7684\u5e7f\u64ad\u673a\u5236","text":"\u4f7f\u7528Numpy\u8fdb\u884c\u673a\u5668\u5b66\u4e60\u65f6\uff0c\u5411\u91cf\u4e4b\u95f4\u7684\u8fd0\u7b97\u6d89\u53ca\u5230\u5230\u5e7f\u64ad\u673a\u5236(Broadcast)\uff0c \u8be6\u7ec6\u7684\u5e7f\u64ad\u673a\u5236\u662f\u5f88\u957f\u7684\uff0c\u4f46\u662f\u53ef\u901a\u8fc7\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\u5c31\u80fd\u7aa5\u89c1\u5176\u4e00\u4e8c\u3002
","tags":["Python","Numpy","\u5e7f\u64ad\u673a\u5236","\u673a\u5668\u5b66\u4e60"]},{"location":"blog/2025/01/19/np_bc/#_1","title":"\u80cc\u666f","text":"\u5728\u5b66\u4e60\u673a\u5668\u5b66\u4e60\u65f6\uff0c\u5c1d\u8bd5\u4f7f\u7528Numpy\u6784\u5efa\u4e00\u4e2a\u7b80\u5355\u7684\u591a\u8f93\u5165\u7279\u5f81\u7684\u5b9e\u9a8c\u6027\u4ee3\u7801\u65f6\uff0c \u53d1\u73b0\u6700\u540e\u7684\u7ed3\u679c\u51fa\u73b0\u4e86\u7ef4\u5ea6\u4e0a\u5347\u95ee\u9898\uff0c\u5982\u4e0b\uff0c\u5728\u8fd9\u91cc\u4f7f\u7528\u4e86\uff1a
import numpy as np\n\nn = 500\nm = 5\nw = np.array([[3,2,6,1,7]]).T\nb = 8\nnp.random.seed(42)\nx = np.random.rand(m, n)\nx_aug = np.pad(x, ((0, 1), (0, 0)), 'constant', constant_values=1)\nw_aug = np.pad(w, ((0, 1), (0, 0)), 'constant', constant_values=b)\ny = np.dot(w_aug.T,x_aug)\n\n# \u6dfb\u52a0\u9ad8\u65af\u566a\u58f0 \nmu, sigma = 0, 1 # \u5747\u503c\u548c\u6807\u51c6\u5dee \nnoise = np.random.normal(mu, sigma, y.shape) \ny_noisy = y + noise\n\nfrom sklearn.model_selection import train_test_split\n\n# \u8f6c\u7f6e x_aug \u548c y_noisy \u4ee5\u8fdb\u884c\u6253\u4e71\u548c\u5206\u5272\nx_aug = x_aug.T\ny_noisy = y_noisy.T\n\n# \u5c06\u6570\u636e\u6253\u4e71\u5e76\u5206\u6210\u8bad\u7ec3\u96c6\u548c\u6d4b\u8bd5\u96c6\nx_train, x_test, y_train, y_test = train_test_split(x_aug, y_noisy, test_size=0.2, random_state=42)\n\n# \u8f93\u51fa\u7ed3\u679c\nprint(\"\u8bad\u7ec3\u96c6 X \u7684\u5f62\u72b6:\", x_train[:,:-1].shape)\nprint(\"\u6d4b\u8bd5\u96c6 X \u7684\u5f62\u72b6:\", x_test.shape)\nprint(\"\u8bad\u7ec3\u96c6 Y \u7684\u5f62\u72b6:\", y_train.shape)\nprint(\"\u6d4b\u8bd5\u96c6 Y \u7684\u5f62\u72b6:\", y_test.shape)\n
# \u7ebf\u6027\u6a21\u578b\u51fd\u6570\ndef line_fun(x, w, b):\n return np.dot(w.T, x)+b\n\n\n# \u8bbe\u5b9a\u4e00\u4e2a\u5e73\u65b9\u635f\u5931\u51fd\u6570\u7684\u68af\u5ea6\u4f18\u5316\ndef gradient_optimization(x, y, w, b):\n y_pre = line_fun(x, w, b)\n grad_w = -(y - y_pre) * x\n grad_b = -(y - y_pre)\n return grad_w, grad_b\n# \u635f\u5931\u51fd\u6570 \ndef loss_function(x, y, k, b): \n y_pre = line_fun(x, k, b) \n return np.mean((y - y_pre) ** 2)\n
# \u8bbe\u5b9a\u5b66\u4e60\u53d8\u91cfw\u548cb\u7684\u521d\u59cb\u503c\nw = np.ones((5, 1)) # \u521d\u59cb\u6743\u91cd\u5411\u91cf\uff0c\u7ef4\u5ea6\u4e3a5*1\nb = 0.0\nlearning_rate = 0.001\ndecay_rate = 0.5\n\ntolerance = 1e-6\nmax_epochs = 1000\nmin_improvement = 1e-6\npatience = 10\n\n# \u8bad\u7ec3\u8fc7\u7a0b\nprevious_loss = float('inf')\nimprovement_streak = 0\n\n# \u8bad\u7ec3\u96c6\u5faa\u73af\nfor i in range(max_epochs):\n learning_rate = 0.01 / (1 + decay_rate * i)\n current_loss = 0\n for n in range(x_train.shape[0]):\n x_n = x_train[n, :-1] # \u8f93\u5165\u7279\u5f81\u5411\u91cf\n y_n = y_train[n] # \u76ee\u6807\u503c\n grad_w, grad_b = gradient_optimization(x_n, y_n, w, b)\n w = w - learning_rate * grad_w\n b = b - learning_rate * grad_b\n current_loss += loss_function(x_n, y_n, w, b)\n\n current_loss /= x_train.shape[0]\n if abs(previous_loss - current_loss) < min_improvement:\n improvement_streak += 1\n else:\n improvement_streak = 0\n\n if improvement_streak >= patience:\n print(f\"Training stopped after {i} epochs due to no significant improvement.\")\n break\n\n previous_loss = current_loss\n\nprint(f\"Final values: w={w.T},\\n b={b}, loss={previous_loss}\")\n
output:\nFinal values: w=[[3.02622292 3.02622292 3.02622292 3.02622292 3.02622292]\n [2.44689788 2.44689788 2.44689788 2.44689788 2.44689788]\n [5.7501989 5.7501989 5.7501989 5.7501989 5.7501989 ]\n [1.51654221 1.51654221 1.51654221 1.51654221 1.51654221]\n [6.47852751 6.47852751 6.47852751 6.47852751 6.47852751]], \n b=[ 6.95328209 8.38911179 0.17837436 10.70002468 -1.62483275], loss=4.85157491175411\n
\u53ef\u4ee5\u53d1\u73b0\uff0cw\u548cb\u5747\u88ab\u5e7f\u64ad\u673a\u5236\u6269\u5145\u4e3a(5,5)(1,5)\u7684\u77e9\u9635\u3002\u5404\u4f4d\u53ef\u4ee5\u601d\u8003\u4e00\u4e0b\u4e3a\u4ec0\u4e48\u3002","tags":["Python","Numpy","\u5e7f\u64ad\u673a\u5236","\u673a\u5668\u5b66\u4e60"]},{"location":"blog/2025/01/19/np_bc/#_2","title":"\u95ee\u9898\u6240\u5728","text":"\u7ecf\u8fc7\u7e41\u7410\u7684\u95ee\u9898\u6392\u67e5\uff0c\u505a\u4e86\u4ee5\u4e0b\u6d4b\u8bd5\u4ee3\u7801\uff1a
Test1.pyTest2.pyx = np.ones((5,)) # \u76f8\u5f53\u4e8ex_n = x_train[n, :-1] (1)\nw = np.ones((5,1))# \nb = 1.0\ny = 1\ny_pre = np.dot(w.T, x)+b\nw = w + (y - y_pre) * x\nprint(f\"shape of w: {w.shape}\")\n\ny_pre = np.dot(w.T, x)+b\nprint(f\"shape of y_pre: {y_pre.shape}\")\n
output: \nshape of w: (5, 5)\nshape of y_pre: (5,)\n
x = np.ones((5,1))\nw = np.ones((5,1))\nb = 1.0\ny = 1\ny_pre = np.dot(w.T, x)+b\nw = w + (y - y_pre) * x\nprint(f\"shape of w: {w.shape}\")\n\ny_pre = np.dot(w.T, x)+b\nprint(f\"shape of y_pre: {y_pre.shape}\")\n
output: \nshape of w: (5, 1)\nshape of y_pre: (1, 1)\n
\u5de6\u8fb9\u662fx = np.ones((5,))
\uff0c\u76f8\u5f53\u4e8e\u4e00\u4e2a5\u4e2a\u5e38\u6570\u3002 \u53f3\u8fb9\u662fx = np.ones((5,1))
\uff0c\u662f\u4e00\u4e2a\u884c\u5411\u91cf
\u6ce8\u610fw = w + (y - y_pre) * x
\u8fd9\u4e00\u6b65\u7684\u8fd0\u7b97\uff1a
(y - y_pre) * x
-->(1,)\u4e58\u4ee5(5,)\uff0c\u5f97\u5230\u7684shape\u4e3a(5,)w + (y - y_pre) * x
-->(5,1)\u52a0(5,)\uff0c\u5f97\u5230\u7684shape\u4e3a(5,5)(y - y_pre) * x
-->(1,)\u4e58\u4ee5(5,1)\uff0c\u5f97\u5230\u7684shape\u4e3a(5,1)w + (y - y_pre) * x
-->(5,1)\u52a0(5,1)\uff0c\u5f97\u5230\u7684shape\u4e3a(5,1)\u5728Numpy\u4e2d\uff0c\u5c24\u5176\u9700\u8981\u6ce8\u610f(5,)\u8fd9\u6837shape\u7684\u53d8\u91cf\uff0c\u5b83\u4f1a\u88ab\u5f53\u4f5c5\u4e2a\u5e38\u91cf\uff0c\u53735\u4e2ashape\u4e3a(1,1)\u7684\u5411\u91cf\uff0c \u4e0eshape\u4e3a(5,1)\u7684\u5411\u91cf\u4f5c\u52a0\u7b97\u4f1a\u5f97\u5230shape\u4e3a(5,5)\u7684\u5411\u91cf\u3002
\u8fd9\u4e5f\u5c31\u662f\u4e3a\u4ec0\u4e48\u5728\u4f17\u591a\u5173\u4e8eNumpy\u7684\u4e66\u7c4d\u548c\u6559\u7a0b\u4e2d\uff0c\u4f18\u5148\u4f7f\u7528\u884c\u5411\u91cf\u7684\u8868\u793a\u65b9\u5f0f\u7684\u539f\u56e0\u3002
\u8bd5\u4e00\u8bd5
\u8bd5\u8bd5\u4e0b\u9762\u4ee3\u7801\u770b\u770b\u7ed3\u679c\uff0c\u53d1\u73b0\u4e86\u4ec0\u4e48\uff1f
x = np.ones((5,)) # \u8f93\u5165\u7279\u5f81\u5411\u91cf\nw = np.ones((5,1))\nprint(f\"shape of the result: {(x - w)}\")\nprint(f\"shape of the result: {(x * w)}\")\nprint(f\"shape of the result: {np.subtract(x, w)}\")\nprint(f\"shape of the result: {np.dot(x, w)}\")\n
","tags":["Python","Numpy","\u5e7f\u64ad\u673a\u5236","\u673a\u5668\u5b66\u4e60"]},{"location":"blog/2025/01/06/Vedio_processing_by_python/","title":"\u57fa\u4e8ePython\u7684\u89c6\u9891\u5904\u7406","text":"\u4e00\u5f00\u59cb\u6211\u662f\u4e3a\u4e86\u505a\u4e00\u4e2aGIF\u56fe\uff0c\u7136\u540e\u8fdb\u884c\u4e00\u4e2a\u538b\u7684\u7f29\uff0c\u7f29\u52308M\u4ee5\u4e0b\uff0c\u4ee5\u4fbf\u53d1\u5230B\u7ad9\u52a8\u6001\u3002\u4f46\u662f\u7f51\u4e0a\u7684\u5728\u7ebf\u538b\u7f29\u5de5\u5177\u90fd\u4e0d\u592a\u597d\u7528\uff0c\u4e8e\u662f\u60f3\u5230\u4e86Python\uff0c\u4e00\u67e5\u679c\u7136\u6709\u8fd9\u6837\u7684\u5a92\u4f53\u5904\u7406\u6a21\u5757\uff1amoviepy
\u53c2\u8003\u4e86\u4ee5\u4e0b\u6587\u7ae0\uff1a
\u9996\u5148\u7528Win11\u81ea\u5e26\u7684\u89c6\u9891\u526a\u8f91\u8f6f\u4ef6\u526a\u4e86\u4e00\u4e0b\uff0c\u7136\u540e\u5bfc\u5165moviepy
\uff0c\u6309\u7167\u6559\u7a0b\u7ed9\u7684\u4ee3\u7801\u8fdb\u884c\u6d4b\u8bd5\uff1a
from moviepy.editor import *\n\nclip = VideoFileClip(r\"C:\\Users\\czc_c\\Downloads\\Liar Dancer.mp4\")\nclip = clip.resize(0.4) # \u538b\u7f29\u5927\u5c0f\nclip.write_gif(\"movie-10f.gif\",fps=15) #\u8bbe\u7f6e\u4e3a\u6bcf\u79d215\u5e27\n
`module 'PIL.Image' has no attribute 'ANTIALIAS'
error\uff1amodule 'PIL.Image' has no attribute 'ANTIALIAS'
\u67e5\u4e86\u4e4b\u540e\u53d1\u73b0\u662fPillow \u4ece10.0\u7248\u672c\u540e\u5c31\u79fb\u9664\u4e86ANTIALIAS
\uff0c\u89e3\u51b3\u65b9\u6848\u5c31\u662f\u5bfc\u51659.5\u7248\u672c\u3002
AttributeError: module 'PIL.Image' has no attribute 'ANTIALIAS'
","tags":["Python","Vedio","Image"]},{"location":"blog/2025/01/16/pavlovian/","title":"\u7406\u5de5\u751f\u4e0d\u4f1a\u68a6\u89c1\u5df4\u752b\u6d1b\u592b\u6761\u4ef6\u53cd\u5c04","text":"Learning when not to solve a problem is one of the hardest things I've learnt.
Quote
Programmers have a pavlovian engineering response. Pose them a problem and they'll start trying to solve it. Give them a chance to co-engineer along with your presentation by making sure the first bite gets their saliva flowing. Then you can explain the rest of the problem and your brilliant solution knowing that they are there along with you.
\u4eca\u5929\u770b\u5230\u4e00\u7bc7\u6587\u7ae0\uff0c\u63d0\u5230\u8be5\u5982\u4f55\u5728\u4e00\u6b21\u53d1\u8868\u4e2d\u5438\u5f15\u89c2\u4f17\u7684\u6ce8\u610f\u529b\uff0c\u8bf4\u662f\u8981\u5148\u679c\u540e\u56e0\uff0c\u6216\u8005\u662f\u5012\u53d9\u3002\u6bd4\u5982\u5148\u8bf4\u51fa\u4e00\u4e2a\u82f1\u96c4\u6b63\u5728\u88ab\u903c\u5165\u7edd\u5883\uff0c\u540e\u4ece\u5934\u5f00\u59cb\u63cf\u8ff0\u4e00\u5207\u7684\u5f00\u7aef\u3002
\u6bd4\u8d77\u8fd9\u4e2a\uff0c\u6211\u66f4\u559c\u6b22\u8fd9\u4e2a\u6587\u7ae0\u91cc\u63d0\u5230\u7684\uff0cpavlovian engineering response\uff0c\u7406\u5de5\u751f\u7684\u5df4\u666e\u6d1b\u592b\u6761\u4ef6\u53cd\u5c04\uff0c\u4ed6\u4eec\u770b\u5230\u4e00\u4e2a\u95ee\u9898\u4f1a\u4e0d\u81ea\u89c9\u5f00\u59cb\u601d\u8003\u89e3\u51b3\u7684\u7684\u65b9\u6cd5\u3002\u8fd9\u53ef\u592a\u611f\u540c\u8eab\u53d7\u4e86\uff0c\u7406\u5de5\u7537\u7684\u7279\u6709\u7684\u76f4\u7537\u8868\u73b0\uff0c\u6536\u5230\u6765\u81ea\u5f02\u6027\u7684\u503e\u8bc9\u9996\u5148\u5e76\u4e0d\u662f\u611f\u540c\u8eab\u53d7\u53bb\u5b89\u6170\uff0c\u800c\u662f\u63d0\u51fa\u89e3\u51b3\u65b9\u6848\u3002
Quote
'Programmers have a pavlovian engineering response. Pose them a problem and they'll start trying to solve it.' One of the truest statements I've read in a long while. (Learning when not to solve a problem is one of the hardest things I've learnt.)
\u8fd9\u662f\u4e0b\u9762\u7684\u7b2c\u4e00\u6761\u8bc4\u8bba\uff0c\u770b\u5b8c\u76f4\u63a5\u6ca1\u7ef7\u4f4f\uff0c\u7279\u522b\u662f\u62ec\u53f7\u91cc\u7684\u5410\u69fd\uff0c\u6bcf\u4e2a\u7406\u5de5\u7537\u770b\u5b8c\u90fd\u4f1a\u4f1a\u5fc3\u4e00\u7b11\u7684\u3002
","tags":["\u8da3\u4e8b"]},{"location":"code/","title":"Index","text":"\u4e00\u4e9b\u5173\u4e8e\u300a\u795e\u7ecf\u7f51\u7edc\u4e0e\u6df1\u5ea6\u5b66\u4e60\u300b\u7684\u7b14\u8bb0
\u4e66\u4e2d\u5bf9\u6574\u672c\u4e66\u7684\u7ed3\u6784\u5982\u4e0b\uff0c\u5f53\u4e0d\u77e5\u9053\u5728\u5b66\u4ec0\u4e48\u7684\u65f6\u5019\uff0c\u53ef\u4ee5\u770b\u4e00\u4e0b\u8fd9\u4e2a\u56fe
\u5bf9\u4e8e\u4eba\u6765\u8bf4\uff0c\u4e0a\u9762\u4e24\u4e2a\u8fc7\u7a0b\u901a\u8fc7\u5927\u8111\u7684\u795e\u7ecf\u7f51\u7edc\u548c\u795e\u7ecf\u7a81\u89e6\u7684\u654f\u611f\u5ea6\u7684\u4fee\u6b63\u6765\u5b9e\u73b0\u3002 \u4f46\u5b9e\u9645\u7684\u751f\u7406\u8fc7\u7a0b\u8981\u66f4\u4e3a\u590d\u6742\u3002
Note
\u77e5\u4e4e\u5173\u4e8e\u4eba\u662f\u600e\u4e48\u5b9e\u73b0\u5b66\u4e60\u7684\u8ba8\u8bba\uff0c\u6211\u89c9\u5f97\u5f88\u6709\u610f\u4e49
","tags":["Neural Network","Deep Learning"]},{"location":"code/nndl/#_3","title":"\u7b80\u5355\u5f15\u4f8b","text":"\u6839\u636e\u673a\u5668\u5b66\u4e60\u7684\u4e09\u4e2a\u57fa\u672c\u8981\u7d20\uff1a
graph LR\n A[\u6a21\u578b] --> B[\u5b66\u4e60\u51c6\u5219];\n B --> C[\u4f18\u5316\u7b97\u6cd5];\n C-->A;
\u6211\u60f3\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\uff0c\u5224\u65ad(0.5,3)\u5728\u54ea\u6761\u659c\u7387\u4e3a1\u7684\u7ebf\u4e0a graph LR\n direction LR\n C[\"\u4e8c\u7ef4\u5750\u6807\u70b9(0.5,3)\"]-->A[\u6a21\u578b\uff1ay=x+5]; \n A--> B[\"\u8f93\u51fa\uff1a5.5\"];\n
graph LR\n D[\"\u4e8c\u7ef4\u5750\u6807\u70b9(0.5,3)\"]-->E[\u6a21\u578b\uff1ay=x+5]; \n E--> F[\"\u8f93\u51fa\uff1a5.5\"];\n F--> G[\u5b66\u4e60\u51c6\u5219\uff1a\u4f5c\u5dee,5.5-3=2.5];\n G--> H[\u4f18\u5316\u7b97\u6cd5\uff1a\u5f25\u8865\u5dee: y=x+5-2.5];\n H-->E;\n
graph LR\n A[\"\u4e8c\u7ef4\u5750\u6807\u70b9(0.5,3)\"]-->B[\u6a21\u578b\uff1ay=x+2.5]; \n B--> C[\"\u8f93\u51fa\uff1a3\"];\n C--> G[\u5b66\u4e60\u51c6\u5219\uff1a\u4f5c\u5dee,3-3=0];\n
\u4e0a\u9762\u4e09\u4e2a\u6b65\u9aa4\u5c55\u793a\u4e09\u4e2a\u57fa\u672c\u8981\u7d20\u7684\u57fa\u672c\u5173\u7cfb\u3002\u4f46\u8fd9\u91cc\u53ea\u7528\u4e86\u4e00\u6b21\u5b66\u4e60\u5c31\u83b7\u5f97\u4e86\u6700\u4f73\u7ed3\u679c\uff0c \u5b9e\u9645\u95ee\u9898\u5f80\u5f80\u662f\u9700\u8981\u591a\u6b21\u5b66\u4e60\u6765\u903c\u8fd1\u771f\u5b9e\u6a21\u578b\u7684\u3002","tags":["Neural Network","Deep Learning"]},{"location":"code/nndl/#_4","title":"\u5177\u4f53\u95ee\u9898\u5177\u4f53\u5206\u6790","text":"","tags":["Neural Network","Deep Learning"]},{"location":"code/opt_alg/","title":"nndl-\u4f18\u5316\u7b97\u6cd5","text":"","tags":["Neural Network","Deep Learning","Algorithm"]},{"location":"code/opt_alg/#_1","title":"\u968f\u673a\u68af\u5ea6\u4e0b\u964d\u6cd5","text":"\u751f\u6210\u6570\u636e\u70b9\u7ebf\u6027\u6a21\u578b\uff0c\u635f\u5931\u51fd\u6570\u548c\u68af\u5ea6\u4f18\u5316\uff1a\u968f\u673a\u68af\u5ea6\u4e0b\u964d\u6cd5 import numpy as np\nn = 500\nm = 5\nw = np.array([[3,2,6,1,7]]).T\nb = 5\nprint('shape of w:',w.shape)\nnp.random.seed(42)\nx = np.random.rand(m, n)\nx_aug = np.pad(x, ((0, 1), (0, 0)), 'constant', constant_values=1)\n# print(x_aug)\nw_aug = np.pad(w, ((0, 1), (0, 0)), 'constant', constant_values=b)\ny = np.dot(w_aug.T,x_aug)\nprint(y.shape)\n# print(augmented_matrix)\n# \u6dfb\u52a0\u9ad8\u65af\u566a\u58f0 \nmu, sigma = 0, 1 # \u5747\u503c\u548c\u6807\u51c6\u5dee \nnoise = np.random.normal(mu, sigma, y.shape) \nprint(noise.shape)\ny_noisy = y + noise\nfrom sklearn.model_selection import train_test_split\n\n# \u8f6c\u7f6e x_aug \u548c y_noisy \u4ee5\u8fdb\u884c\u6253\u4e71\u548c\u5206\u5272\nx_aug = x_aug.T\ny_noisy = y_noisy.T\n\n# \u5c06\u6570\u636e\u6253\u4e71\u5e76\u5206\u6210\u8bad\u7ec3\u96c6\u548c\u6d4b\u8bd5\u96c6\nx_train, x_test, y_train, y_test = train_test_split(x_aug, y_noisy, test_size=0.2, random_state=42)\n\n# \u8f93\u51fa\u7ed3\u679c\nprint(\"\u8bad\u7ec3\u96c6 X \u7684\u5f62\u72b6:\", x_train[:,:-1].shape)\nprint(\"\u6d4b\u8bd5\u96c6 X \u7684\u5f62\u72b6:\", x_test.shape)\nprint(\"\u8bad\u7ec3\u96c6 Y \u7684\u5f62\u72b6:\", y_train.shape)\nprint(\"\u6d4b\u8bd5\u96c6 Y \u7684\u5f62\u72b6:\", y_test.shape)\n
# \u7ebf\u6027\u6a21\u578b\u51fd\u6570\ndef line_fun(x, w, b):\n return np.dot(w.T, x)+b\n\n\n# \u8bbe\u5b9a\u4e00\u4e2a\u5e73\u65b9\u635f\u5931\u51fd\u6570\u7684\u68af\u5ea6\u4f18\u5316\ndef gradient_optimization(x, y, w, b):\n y_pre = line_fun(x, w, b)\n grad_w = -(y - y_pre) * x\n grad_b = -(y - y_pre)\n # print(f\"grad_w {grad_w.shape}, grad_b {grad_b.shape}\")\n return grad_w, grad_b\n# \u635f\u5931\u51fd\u6570 \ndef loss_function(x, y, k, b): \n y_pre = line_fun(x, k, b) \n return np.mean((y - y_pre) ** 2)\n
# \u8bbe\u5b9a\u5b66\u4e60\u53d8\u91cfw\u548cb\u7684\u521d\u59cb\u503c\nw = np.ones((5, 1)) # \u521d\u59cb\u6743\u91cd\u5411\u91cf\uff0c\u7ef4\u5ea6\u4e3a5*1\nb = 0.0\nlearning_rate = 0.001\ndecay_rate = 0.5\n\ntolerance = 1e-6\nmax_epochs = 1000\nmin_improvement = 1e-6\npatience = 10\n\n# \u8bad\u7ec3\u8fc7\u7a0b\nprevious_loss = float('inf')\nimprovement_streak = 0\n\n# \u8bad\u7ec3\u96c6\u5faa\u73af\nfor i in range(max_epochs):\n learning_rate = 0.01 / (1 + decay_rate * i)\n current_loss = 0\n for n in range(x_train.shape[0]):\n x_n = x_train[n, :-1].reshape(5,1) # \u8f93\u5165\u7279\u5f81\u5411\u91cf\n y_n = y_train[n] # \u76ee\u6807\u503c\n grad_w, grad_b = gradient_optimization(x_n, y_n, w, b)\n # print(f\"grad_w {grad_w.T}, grad_b {grad_b}\")\n w = w - learning_rate * grad_w\n b = b - learning_rate * grad_b\n current_loss += loss_function(x_n, y_n, w, b)\n\n current_loss /= x_train.shape[0]\n if abs(previous_loss - current_loss) < min_improvement:\n improvement_streak += 1\n else:\n improvement_streak = 0\n\n if improvement_streak >= patience:\n print(f\"Training stopped after {i} epochs due to no significant improvement.\")\n break\n\n previous_loss = current_loss\n\nprint(f\"Final values: w={w.T},\\n b={b}, loss={previous_loss}\")\n
","tags":["Neural Network","Deep Learning","Algorithm"]},{"location":"code/opt_alg/#_2","title":"\u6700\u5c0f\u4e8c\u4e58\u6cd5","text":"\u751f\u6210\u6570\u636e\u70b9\u7ebf\u6027\u6a21\u578b\uff0c\u635f\u5931\u51fd\u6570\u548c\u68af\u5ea6\u4f18\u5316\uff1a\u968f\u673a\u68af\u5ea6\u4e0b\u964d\u6cd5 import numpy as np\nfrom sklearn.model_selection import train_test_split\n\nn = 500\nm = 5\nw = np.array([[3,2,6,1,7]]).T\nb = 5\nnp.random.seed(42)\nx = np.random.rand(m, n)\nx_aug = np.pad(x, ((0, 1), (0, 0)), 'constant', constant_values=1)\nw_aug = np.pad(w, ((0, 1), (0, 0)), 'constant', constant_values=b)\ny = np.dot(w_aug.T,x_aug)\n\n# \u6dfb\u52a0\u9ad8\u65af\u566a\u58f0 \nmu, sigma = 0, 1 # \u5747\u503c\u548c\u6807\u51c6\u5dee \nnoise = np.random.normal(mu, sigma, y.shape) \ny_noisy = y + noise\n\n\n# \u8f6c\u7f6e x_aug \u548c y_noisy \u4ee5\u8fdb\u884c\u6253\u4e71\u548c\u5206\u5272\nx_aug = x_aug.T\ny_noisy = y_noisy.T\n\n# \u5c06\u6570\u636e\u6253\u4e71\u5e76\u5206\u6210\u8bad\u7ec3\u96c6\u548c\u6d4b\u8bd5\u96c6\nx_train, x_test, y_train, y_test = train_test_split(x_aug, y_noisy, test_size=0.2, random_state=42)\n\n# \u8f93\u51fa\u7ed3\u679c\nprint(\"\u8bad\u7ec3\u96c6 X \u7684\u5f62\u72b6:\", x_train[:,:-1].shape)\nprint(\"\u6d4b\u8bd5\u96c6 X \u7684\u5f62\u72b6:\", x_test.shape)\nprint(\"\u8bad\u7ec3\u96c6 Y \u7684\u5f62\u72b6:\", y_train.shape)\nprint(\"\u6d4b\u8bd5\u96c6 Y \u7684\u5f62\u72b6:\", y_test.shape)\n
# \u7ebf\u6027\u6a21\u578b\u51fd\u6570\nclass Linear():\n def __init__(self, input_dim, output_dim):\n self.params = {}\n self.params['w'] = np.random.randn(input_dim, output_dim).astype(np.float32)\n self.params['b'] = np.random.randn(output_dim).astype(np.float32)\n
def inverse_matrix(matrix):\n try:\n # \u5224\u65ad\u77e9\u9635\u662f\u5426\u53ef\u9006\n if np.linalg.det(matrix) == 0:\n return None, \"The matrix is not invertible\"\n else:\n # \u8ba1\u7b97\u77e9\u9635\u7684\u9006\n inv_matrix = np.linalg.inv(matrix)\n return inv_matrix\n except np.linalg.LinAlgError as e:\n return None, f\"An error occurred: {str(e)}\"\n\n# \u4f18\u5316\u7b97\u6cd5\uff1a\ndef optimizer_RLS(X, y, model, reg_lambda=0.001):\n x_mean_T = np.mean(X, axis=0).T\n y_mean = np.mean(y)\n x_sub = np.subtract(X,x_mean_T)\n # \u8ba1\u7b97w_star\u7684\u7b2c\u4e00\u9879\n temp1 = inverse_matrix(np.dot(x_sub.T,x_sub)+reg_lambda*np.eye(x_sub.shape[1]))\n # \u8ba1\u7b97w_star\u7684\u7b2c\u4e8c\u9879\n temp2 = np.dot(x_sub.T,(y-y_mean))\n w_star = np.dot(temp1,temp2)\n b_star = y_mean - np.dot(x_mean_T, w_star)\n\n model.params['w'] = w_star\n model.params['b'] = b_star\n\nmodel = Linear(5, 1)\noptimizer_RLS(x_train[:,:-1], y_train, model)\nprint(\"w_pred:\",model.params['w'], \"b_pred: \", model.params['b']) # print model parameters\n
","tags":["Neural Network","Deep Learning","Algorithm"]},{"location":"game/","title":"Game","text":"\u6211\u5728\u73a9\u73a9\u8fc7 \u975e\u5e38\u826f\u5fc3\u7684\u6e38\u620f\uff0c\u9664\u4e86\u4e0d\u597d\u73a9\u54ea\u91cc\u90fd\u597d\uff0c\u6da9\u6da9\u662f\u6700\u201c\u5927\u201d\u7684\u7279\u70b9\u3002
\u4e5f\u662f\u5f88\u597d\u7684\u6e38\u620f\uff0c\u5728\u5854\u9632\u4e8c\u6e38\u4e2d\u662f\u5f00\u62d3\u6027\u4e14\u72ec\u4e00\u6863\uff0c\u4e00\u76f4\u5728\u521b\u65b0
\u5982\u679c\u4f60\u559c\u6b22\u52a8\u4f5c\u6e38\u620f\uff0c\u4f60\u5c31\u4e00\u5b9a\u80fd\u770b\u5230\u5b83\u7684\u52a8\u4f5c\u548c\u7f8e\u672f\u8bbe\u8ba1\u7684\u95ea\u5149\u70b9\u3002\u542c\u53d6\u73a9\u5bb6\u610f\u89c1\uff0c\u4e00\u76f4\u5728\u6539\u8fdb\uff0c\u5c0f\u5c0f\u5de5\u4f5c\u5ba4\u80fd\u5c55\u73b0 \u51fa\u8fd9\u4e48\u591a\u7684\u66f4\u65b0\uff0c\u5f88\u62c5\u5fc3\u4ed6\u4eec\u7684\u809d\u3002
\u89d2\u8272\u5f88\u53ef\u7231\uff0c\u7f8e\u672f\u4e0d\u9519\uff0c\u4e5f\u4e0d\u6c2a\uff0c\u4ec5\u6b64\u800c\u5df2\u3002\u516c\u4f1a\u6218\u8bd7\u4eba\u63e1\u6301
\u6bd4\u516c\u4e3b\u8fde\u7ed3\u597d\u4e00\u70b9\uff0c\u89d2\u8272\u8bbe\u8ba1\u5f88\u597d\uff0c\u5267\u60c5\u4e5f\u53ef\u5708\u53ef\u70b9\uff08\u4e3a\u6570\u4e0d\u591a\u770b\u8fc7\u5267\u60c5\u7684\uff09\uff0c\u5c31\u662f\u6709\u70b9\u6c2a\uff08\u6ca1\u6c2a\u8fc7\u4e00\u5206\u5c31\u662f\u4e86\uff09\uff0c \u5f88\u65e0\u804a\uff0c\u611f\u89c9\u5c31\u662f\u516c\u4e3b\u8fde\u7ed3\u8fd9\u6837\u7684\u9ad8\u914d\u7248\u3002
\u753b\u9762\u5bf9\u5f53\u65f6\u7684\u6211\u771f\u7684\u65f6\u4e0d\u5c0f\u7684\u9707\u64bc\uff0c\u5404\u79cd\u65b0\u5947\u7684\u70b9\u5b50\u975e\u5e38\u6709\u610f\u601d\u3002\u81f3\u5c11\u6211\u5bf9\u5b83\u7684\u8bc4\u4ef7\u662f\u5f88\u9ad8\u7684
\u5c0f\u5b66\u65f6\u671f\u4ee3\u8868\uff0c\u540c\u65f6\u671f\u7684\u67094399\uff0c\u8d5b\u5c14\u53f7\uff0c\u9020\u68a6\u897f\u6e38\uff0c\u6469\u5c14\u5e84\u56ed
\u521d\u4e2d\u65f6\u671f\u7684\u4ee3\u8868\uff0c\u8fd8\u8bb0\u5f97\u4ee5\u524d\u7528\u4e91\u6e38\u620f\u73a9\u4e86\u65e0\u4e3b\u4e4b\u5730
\u4f9d\u7136\u8bb0\u5f97\u5f53\u65f6\u4e0b\u8f7dLOL\uff0c\u5e76\u7b2c\u4e00\u6b21\u73a9\u8fd9\u79cd\u5927\u578b\u7f51\u6e38\u7684\u5fc3\u60c5
\u6ee1\u660f\uff0c\u54ea\u6015\u6211\u4e0d\u73a9\u4e86\uff0c\u6211\u5bf9\u5b83\u7684\u8bc4\u4ef7\u4e5f\u662f\u6700\u9ad8\u7684\uff0c\u5f53\u65f6\u4e8c\u6e38\u5e02\u573a\u5361\u724c\u76db\u884c\uff0c\u5d29\u5d29\u5bf9\u6211\u6765\u8bf4\u5c31\u662f\u964d\u7ef4\u6253\u51fb\uff0c \u4e16\u754c\u89c2\uff0c\u7f8e\u672f\uff0c\u53ef\u73a9\u6027\uff0c\u5728\u6211\u5fc3\u91cc\u90fd\u662f\u9876\u7ea7\u3002\u5207\u52ff\u4ee5\u5982\u4eca\u7684\u773c\u5149\u770b\u8fd9\u4e2a\u8fc7\u53bb\u7684\u4f5c\u54c1\u3002
\u624b\u673a\u52a8\u4f5c\u6e38\u620f\u5bf9\u5f53\u65f6\u7684\u6211\u4e5f\u662f\u964d\u7ef4\u6253\u51fb\uff0c\u753b\u9762\uff0c\u7f8e\u672f\uff0c\u52a8\u4f5c\uff0c\u90fd\u975e\u5e38\u9707\u60ca\u6211\u3002\u552f\u4e00\u7684\u7f3a\u70b9\u4fbf\u662f\u6c2a\u91d1\uff0c\u4ece\u6b64\u57cb\u4e0b\u4e86\u7c73\u6c60\u7684\u4f0f\u7b14
\u5f00\u670d\u65f6\u975e\u5e38\u9707\u60ca\uff0c\u753b\u9762\uff0c\u7f8e\u672f\uff0c\u73a9\u6cd5\uff0c\u540c\u6837\u4e5f\u662f\u964d\u7ef4\u6253\u51fb\uff0c\u4f46\u662f\u62bd\u5361\u5f88\u4ee4\u4eba\u7834\u9632
\u53ef\u524d\u5f80wiki\u53c2\u8003
\u56f0\u96be\u6ee1\u961f\u5237\u7ecf\u9a8c\uff0c\u666e\u901a\u548c\u7b80\u5355\u4f4e\u8017
\u56f0\u96be\u666e\u901a/\u7b80\u5355Note
\u8981\u70b9\uff0c\u654c\u4eba\u4e3a\u4e2d\u7532\uff0c\u56e0\u6b64
\u7a81\u51fb\u8005+\u5361/\u5510\uff0c\u6216\u8005\u4e24\u4e2a\u90fd\u5e26\uff0c\u6700\u597d\u7684\u90fd\u5e26\u4e0a\uff0c\u5305\u4e0d\u6b7b\u7684
"},{"location":"game/azurLane/page_1/","title":"\u5927\u4e16\u754c\u961f\u4f0d\u914d\u7f6e","text":"","tags":["blhx"]},{"location":"game/azurLane/page_1/#for","title":"for \u8001\u54b8\u9c7c","text":"\u914d\u88c51\uff08\u6843\u4e4b\u592d\u592d\uff09\u914d\u88c52\uff08\u9eef\u7136\uff09\u7eaf\u901f\u5237\u961f\u914d\u7f6e
Tip
\u914d\u5408Alas\u4ee5\u53ca\u201c\u9eef\u7136\u201d\u7684\u914d\u7f6e\u4f7f\u7528, \u7b2c\u4e00\u961f2\u5976\u5988\u5e26\u4e00\u5806100\u7ea7\u4e00\u4e0b\u7ec3\u7ea7 \u7b2c\u4e8c\u961f\u5237\u5176\u4ed6\u6d77\u57df\uff0c\u901f\u5237
","tags":["blhx"]},{"location":"game/azurLane/page_2/","title":"\u811a\u672c","text":"\u89e3\u653e\u751f\u4ea7\u529b\uff0c\u89e3\u653e\u53cc\u624b
","tags":["blhx"]},{"location":"game/azurLane/page_2/#alas","title":"Alas","text":"\u53bb\u4e0b\u8f7d
Tip
\u6211\u63a8\u8350\u6240\u6709\u4eba\u81ea\u5df1\u9605\u8bfb\u4f7f\u7528\u65b9\u6cd5\u548c\u914d\u7f6e\u65b9\u6cd5\u3002
\u4e0b\u9762\u662f\u4e00\u4e9b\u914d\u7f6e\uff0c\u53ef\u4ee5\u770b\u60c5\u51b5\u914d\u7f6e\uff1a
\u4f5c\u8005 \u66f4\u65b0\u65f6\u95f4 \u4e0b\u8f7d \u9eef\u7136 2025\u5e741\u67087\u65e5","tags":["blhx"]},{"location":"music/","title":"\u97f3\u4e50","text":"\u97f3\u4e50\u5728\u6211\u7684\u751f\u6d3b\u4e2d\u4e0d\u53ef\u6216\u7f3a
\u5929\u5929\u90fd\u5728\u201c\u8d1d\u65af\u7b11\u8bdd\u201d\uff0c\u4f46\u6bcf\u4e2a\u4e50\u961f\u8d1d\u65af\u53c8\u662f\u4e0d\u53ef\u6216\u7f3a\u7684\u5b58\u5728\u3002 \u5728\u8fd9\u91cc\u6211\u5206\u4eab\u4e00\u4e9b\u4f4e\u97f3\u6781\u5176\u51fa\u8272\uff0c\u6781\u5176\u4eae\u773c\u7684\u6b4c\u66f2
\u300a\u7121\u8d23\u4efb\u96c6\u5408\u4f53\u300b Movie, Music\uff1a\u30de\u30b5\u30e9\u30c0 Vocal: \u91cd\u97f3\u30c6\u30c8SV
\u30de\u30b5\u30e9\u30c0\u662f\u4e00\u4f4d\u521a\u51fa\u9053\u7684p\u4e3b \u8fd9\u9996\u6b4c\u662f\u5176\u7b2c4\u9996\u66f2\u5b50\uff0c\u5728\u8fd9\u9996\u6b4c\u91cc\uff0cbass\u6210\u4e3a\u4e3b\u8c03\uff0c\u8282\u594f\u611f\u6781\u5f3a\uff0c\u914d\u5408MV\u6781\u5177\u611f\u67d3\u529b\u3002
\u300a\u30d5\u30a1\u30f3\u30c8\u30de\u30a4\u30ba\u300b Music , Lyrics , Arrangement : \u30a8\u30cf\u30e9\u30df\u30aa\u30ea Illustration : \u6cbc\u7530\u30be\u30f3\u30d3 Vocal: Such
\u6bd4\u8f83\u51b7\u95e8\u7684\u6b4c\u66f2\uff0c\u4f46\u662f\u6211\u4e00\u542c\u5c31\u559c\u6b22\u4e0a\u4e86\uff0c \u4f4e\u97f3\u7684\u9f13\u70b9\u975e\u5e38\u6293\u8033\uff0c\u5bf9\u6bd4\u6ca1\u6709\u4f4e\u97f3\u9f13\u70b9\u548c\u6709\u4f4e\u97f3\u9f13\u70b9\u7684\u90e8\u5206\uff0c \u53ef\u4ee5\u53d1\u73b0\u975e\u5e38\u660e\u663e\u7684\u533a\u522b\u3002
\u4e0b\u9762\u662f\u4e00\u4e9b\u76f8\u5173\u6807\u7b7e\u7684\u5217\u8868:
"},{"location":"tags/#algorithm","title":"Algorithm","text":"