当前位置:首页>python>一天一个Python知识点——Day 155:神经网络基础

一天一个Python知识点——Day 155:神经网络基础

  • 2026-02-22 04:32:07
一天一个Python知识点——Day 155:神经网络基础

一、开篇:你早已会用的“黑箱”,今天拆开看看

过去三天,你学会了用TensorFlow、PyTorch、Keras搭建模型。你写下:

model.add(Dense(128, activation='relu'))

然后模型就学会了。

但你是否曾在深夜问过自己:

  • 那一层 Dense(128) 究竟对数据做了什么?

  • activation='relu' 为什么非得是“非线性”?

  • 梯度到底是怎么“反向传播”的?

  • 为什么我的模型训练着训练着就“死了”?

今天,我们不写框架。 我们用最笨的办法——纯Python + 三层循环,手撕一个神经网络。

你会发现:神经网络不是魔法,是数学;不是黑箱,是四则运算。

从感知机到多层网络——历史的顿悟时刻

1957年:一个叫罗森布拉特的人点燃了引信

感知机(Perceptron)——人类历史上第一个有“学习”能力的机器。

它的数学表达式简单得令人敬畏:

output = sign(w·x + b)

其中:

  • w 是权重,x 是输入,b 是偏置

  • sign 是阶跃函数:大于0输出1,小于0输出-1 

它能做什么? 二分类。给定一组猫和狗的图片特征,它画一条直线,把两类分开。

它不能做什么? 任何“非线性”的事情。最著名的反例:XOR异或问题 。

(0,0)→0, (0,1)→1, (1,0)→1, (1,1)→0  —— 没有一条直线能分开这四个点!

1969年,明斯基在《感知机》一书中严厉指出这个缺陷。第一次AI寒冬,就此降临。

历史的讽刺在于:解决XOR的方法其实就在感知机里——堆两层。但那个年代,没人想到。

拯救者:多层感知机(MLP)

多层感知机 = 输入层 + 隐藏层 + 输出层

结构简单得令人难以置信:

输入 → 线性变换 → 激活函数 → 线性变换 → 激活函数 → 输出

但它解决了XOR :

  • 第一层:把二维输入映射到二维隐藏空间

  • 第二层:在隐藏空间里做线性分类

原来如此! 所谓“深度学习”,不过是在“线性变换 + 非线性挤压”这个配方上,重复足够多次

神经元拆解——一台会学习的计算器

一个神经元在做什么?

z = w₁x₁ + w₂x₂ + ... + wₙxₙ + ba = σ(z)

四则运算,仅此而已。

  • 加权求和:输入乘权重,加偏置

  • 激活函数:把线性结果“拧”成非线性

这不是魔法,是你的Python代码里跑过的无数次 np.dot(w, x) + b

2.2 矩阵乘法:神经网络的核心秘密

假设:

  • 输入批次:X,形状 (batch_size, n_features)

  • 权重矩阵:W,形状 (n_neurons, n_features)

  • 偏置:b,形状 (n_neurons,)

这一层计算的就是:

H = X @ W.T + b

为什么用矩阵乘法? ——因为快

让我们亲手验证:三层循环 vs PyTorch

import torchimport numpy as npdef matmul_naive(A, B):    """三层循环的矩阵乘法——每个Python程序员第一次写出的版本"""    m, n = A.shape    n, p = B.shape    C = torch.zeros(m, p)    for i in range(m):        for j in range(p):            for k in range(n):                C[i, j] += A[i, k] * B[k, j]    return Cdef matmul_better(A, B):    """去掉最内层循环——让PyTorch用C语言帮你做点积"""    m, n = A.shape    n, p = B.shape    C = torch.zeros(m, p)    for i in range(m):        for j in range(p):            C[i, j] = (A[i, :] * B[:, j]).sum()    return Cdef matmul_broadcast(A, B):    """利用广播——同时计算整行与矩阵的乘积"""    m, n = A.shape    n, p = B.shape    C = torch.zeros(m, p)    for i in range(m):        C[i, :] = (A[i, :].unsqueeze(1) * B).sum(dim=0)    return C# 测试:5张MNIST图片,展平成784维,映射到10个类别X = torch.randn(5784)W = torch.randn(10784)%time C1 = matmul_naive(X, W.T)%time C2 = matmul_better(X, W.T)%time C3 = matmul_broadcast(X, W.T)%time C4 = X @ W.T  # PyTorch的矩阵乘法

实验结果(基于真实测试):

  • 三层循环:1.7秒

  • 去掉内层循环:3.4毫秒(快500倍)

  • 广播优化:0.6毫秒(快2800倍)

  • PyTorch原生:0.01毫秒(快170,000倍)

结论: 向量化不是技巧,是神经网络能在现代硬件上运行的唯一原因

没有激活函数,堆再多层也是白堆

一个令人震惊的数学事实

假设我们堆叠两层线性层(无激活函数):

H = X @ W1 + b1O = H @ W2 + b2
展开它:
O = (X @ W1 + b1) @ W2 + b2  = X @ (W1 @ W2) + (b1 @ W2 + b2)

奇迹发生了 :

两个线性层的复合,仍然是线性层!
无论你堆叠多少层,整个网络等价于单层感知机

这就是为什么1957-1986年间,人们以为神经网络“只能做线性分类”。

激活函数:打破线性诅咒的关键

激活函数的作用只有一个:引入非线性。

它是压模机,把直线压成曲线,把平面压成曲面,把线性空间扭曲成可以任意分割的非线性流形。

四大激活函数:谁是谁的替身?

Sigmoid —— 历史的功臣

σ(x) = 1 / (1 + e^{-x})输出范围:(0, 1)

优点:平滑、可导、输出可解释为概率
缺点梯度消失——两端导数趋近于0,深层网络无法学习 
今日角色:二分类输出层 

Tanh —— Sigmoid的升级版

tanh(x) = (e^x - e^{-x}) / (e^x + e^{-x})输出范围:(-11)

改进:零中心化,梯度更强([-1,1]内导数0.42~1,Sigmoid仅0.2~0.25)
遗留问题:依然会梯度消失

ReLU —— 现代深度学习的基石

ReLU(x) = max(0, x)

革命性优势 :

  • 计算极快(没有指数运算)

  • 正区间梯度恒为1,无梯度消失

  • 稀疏激活(约50%神经元输出0)

代价神经元坏死

Leaky ReLU / PReLU / ELU —— ReLU的救火队

LeakyReLU(x) = max(αx, x), α通常取0.01
设计思想负区间不给0,给一点点坡度,让“死神经元”有机会复活 
激活函数可视化实验
import numpy as npimport matplotlib.pyplot as pltx = np.linspace(-55200)activations = {    'Sigmoid'lambda x: 1/(1+np.exp(-x)),    'Tanh'lambda x: np.tanh(x),    'ReLU'lambda x: np.maximum(0, x),    'Leaky ReLU'lambda x: np.where(x>0, x, 0.01*x)}fig, axes = plt.subplots(22, figsize=(108))for ax, (name, func) in zip(axes.flat, activations.items()):    y = func(x)    ax.plot(x, y, linewidth=2)    ax.axhline(y=0, color='k', linestyle=':', alpha=0.5)    ax.axvline(x=0, color='k', linestyle=':', alpha=0.5)    ax.set_title(f'{name}', fontweight='bold')    ax.grid(alpha=0.3)plt.suptitle('激活函数家族:线性世界的扭曲器', fontsize=14, fontweight='bold')plt.tight_layout()plt.show()

反向传播——链式法则的艺术

核心思想:把“误差”传回去

神经网络训练 = 参数搜索
我们要找到一组(w, b),让损失函数最小。

梯度的含义:参数往哪个方向调,损失会下降。

反向传播的本质 :

从输出层开始,沿着计算图反向走,每经过一个节点,就用链式法则乘上这个节点的局部梯度。

一个具体例子:手动推导

假设这个最简单的网络:

输入 x → 线性层 z = wx + b → 激活 a = σ(z) → 损失 L = ½(a - y)²
前向传播(你已经很熟了):
z = w*x + ba = σ(z)L = 0.5*(a - y)^2

反向传播(从后往前推):

第1步:输出层的梯度

dL/da = a - y
第2步:激活函数的梯度
da/dz = σ(z) * (1 - σ(z))   # Sigmoid的导数
第3步:链式法则——dL/dz
dL/dz = (dL/da) * (da/dz) = (a - y) * σ(z)*(1-σ(z))
第4步:参数的梯度
dL/dw = dL/dz * dz/dw = dL/dz * xdL/db = dL/dz * dz/db = dL/dz * 1
这就是梯度下降的更新公式!
w ← w - η * dL/dwb ← b - η * dL/db

从零实现:一个神经元的反向传播

import numpy as npclass Neuron:    def __init__(self, n_inputs):        self.w = np.random.randn(n_inputs) * 0.01        self.b = 0.0    def sigmoid(self, z):        return 1 / (1 + np.exp(-z))    def forward(self, x):        """前向:记住中间结果用于反向"""        self.x = x  # 缓存输入        self.z = np.dot(self.w, x) + self.b        self.a = self.sigmoid(self.z)        return self.a    def backward(self, dL_da):        """反向:链式法则"""        da_dz = self.a * (1 - self.a)      # sigmoid导数        dL_dz = dL_da * da_dz        dL_dw = dL_dz * self.x             # 权重梯度        dL_db = dL_dz * 1                  # 偏置梯度        # 如果需要传播给前一层        dL_dx = dL_dz * self.w        return dL_dw, dL_db, dL_dx    def update(self, dL_dw, dL_db, lr=0.1):        self.w -= lr * dL_dw        self.b -= lr * dL_db# 训练一个神经元np.random.seed(42)neuron = Neuron(3)# 假数据x = np.array([0.5, -0.20.8])y_true = 1.0# 前向y_pred = neuron.forward(x)loss = 0.5 * (y_pred - y_true) ** 2# 反向dL_da = y_pred - y_truedL_dw, dL_db, _ = neuron.backward(dL_da)# 更新neuron.update(dL_dw, dL_db, lr=0.5)print(f"更新后权重: {neuron.w}")print(f"更新后偏置: {neuron.b:.4f}")
这就是PyTorch的 .backward() 在你调用时,背后发生的全部真相。

训练陷阱——为什么模型会“死”

梯度消失(Vanishing Gradients)

症状:靠近输入层的参数几乎不更新,深层网络训练不动。

原因:Sigmoid/Tanh在两端导数趋近0。链式法则连乘,层数越多,梯度指数级衰减 。

解药ReLU。它在正区间梯度恒为1,梯度消失被终结。

神经元坏死(Dead Neurons)

症状:某些神经元永远输出0,梯度永远0,权重永不更新 。

数学本质

  • 若对所有训练样本,z = w·x + b ≤ 0

  • 则ReLU输出恒为0

  • 反向时,dL/dw = dL/dz * x,其中 dL/dz = 0

  • 该神经元从网络中被物理移除

解药

  • 使用Leaky ReLU / PReLU / ELU

  • 更小的学习率

  • 更谨慎的权重初始化

对称性破缺:为什么权重不能全零初始化

错误做法

# 这是自杀w = np.zeros((n_inputs, n_neurons))b = np.zeros(n_neurons)

后果:同一层的所有神经元完全相同,前向输出相同,反向梯度相同,多个神经元等于一个神经元 。

正确做法

  • 权重随机小值初始化(打破对称性)

  • 偏置可以初始化为0(它不乘输入,不影响对称性)

  • 现代推荐:He初始化(ReLU专用)或Xavier初始化

# He初始化(ReLU家族推荐)w = np.random.randn(n_inputs, n_neurons) * np.sqrt(2.0 / n_inputs)# Xavier初始化(Sigmoid/Tanh推荐)w = np.random.randn(n_inputs, n_neurons) * np.sqrt(1.0 / n_inputs)

从神经元到神经网络——全连接层代码实战

import numpy as npclass Layer_Dense:    """全连接层:神经网络的基本积木"""    def __init__(self, n_inputs, n_neurons, activation='relu'):        # He初始化(ReLU专用)        self.weights = np.random.randn(n_inputs, n_neurons) * np.sqrt(2.0 / n_inputs)        self.biases = np.zeros(n_neurons)        self.activation_name = activation    def forward(self, inputs):        self.inputs = inputs  # 缓存用于反向传播        self.z = np.dot(inputs, self.weights) + self.biases        # 激活函数        if self.activation_name == 'relu':            self.output = np.maximum(0self.z)        elif self.activation_name == 'sigmoid':            self.output = 1 / (1 + np.exp(-self.z))        elif self.activation_name == 'linear':            self.output = self.z        return self.output    def backward(self, dvalues):        """反向传播:计算梯度"""        self.dz = dvalues.copy()        # 激活函数的梯度        if self.activation_name == 'relu':            self.dz[self.z <= 0] = 0        elif self.activation_name == 'sigmoid':            sig = self.output            self.dz = self.dz * (sig * (1 - sig))        # 参数梯度        self.dweights = np.dot(self.inputs.T, self.dz)        self.dbiases = np.sum(self.dz, axis=0, keepdims=True).flatten()        # 传播给前一层的梯度        self.dinputs = np.dot(self.dz, self.weights.T)        return self.dinputs# 构建一个两层的神经网络class TwoLayerNet:    def __init__(self, input_size, hidden_size, output_size):        self.layer1 = Layer_Dense(input_size, hidden_size, 'relu')        self.layer2 = Layer_Dense(hidden_size, output_size, 'sigmoid')    def forward(self, X):        self.hidden = self.layer1.forward(X)        self.output = self.layer2.forward(self.hidden)        return self.output    def backward(self, dloss):        d2 = self.layer2.backward(dloss)        d1 = self.layer1.backward(d2)    def update(self, lr=0.01):        self.layer2.weights -= lr * self.layer2.dweights        self.layer2.biases -= lr * self.layer2.dbiases        self.layer1.weights -= lr * self.layer1.dweights        self.layer1.biases -= lr * self.layer1.dbiasesprint("全连接层实现完成!")print("你现在拥有了一个可以解决XOR问题的神经网络")

各位学习者,你还记得第149天,我们在做特征工程;第150天,训练第一个模型;第151-154天,驾驭三大框架。

今天,你走完了“神经网络”认知的最后一步。以后你写 model.add(Dense(512, activation='relu')) 时,你会看到:

  • 那不是魔法,是 X @ W.T + b

  • 那不是线性,是 max(0, z)

  • 那不是黑箱,是链式法则的千万次优雅传递

你知道梯度从何而来,去向何方。
你知道神经元何时会死,如何让它复活。
你知道为什么堆叠层数能逼近任意函数,也知道为什么这只是“可能”而非“必然”。

你已经不是框架的使用者,而是懂原理的工程师

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-28 19:43:11 HTTP/2.0 GET : https://f.mffb.com.cn/a/475507.html
  2. 运行时间 : 0.071331s [ 吞吐率:14.02req/s ] 内存消耗:4,688.34kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=c964b62bf49dbbffbf61ad82033f63d1
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000634s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000840s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000308s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000273s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000489s ]
  6. SELECT * FROM `set` [ RunTime:0.000219s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000502s ]
  8. SELECT * FROM `article` WHERE `id` = 475507 LIMIT 1 [ RunTime:0.000462s ]
  9. UPDATE `article` SET `lasttime` = 1772278991 WHERE `id` = 475507 [ RunTime:0.000809s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000233s ]
  11. SELECT * FROM `article` WHERE `id` < 475507 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000413s ]
  12. SELECT * FROM `article` WHERE `id` > 475507 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000389s ]
  13. SELECT * FROM `article` WHERE `id` < 475507 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000793s ]
  14. SELECT * FROM `article` WHERE `id` < 475507 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000909s ]
  15. SELECT * FROM `article` WHERE `id` < 475507 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000761s ]
0.072948s