当前位置:首页>python>32岁零基础学Python量化 第6周 深度学习实战:全手敲复现吴恩达识猫程序,我踩了6个坑

32岁零基础学Python量化 第6周 深度学习实战:全手敲复现吴恩达识猫程序,我踩了6个坑

  • 2026-07-02 03:40:20
32岁零基础学Python量化 第6周 深度学习实战:全手敲复现吴恩达识猫程序,我踩了6个坑

吴恩达之深度学习与神经网络

距离上次更新过去了一周的时间了,抱歉让大家久等了,停下来是为了更好的前进,我重新回顾了我上个月的进度,觉得进度还是慢了,因为时间不等人,花开堪折直须折,所以这个月我准备量化和神经网络并行学习。和上个月一样,这个月也是项目驱动学习,先做再学。具体目标暂列如下:

深度学习和神经网络部分我是看的吴恩达老师的课程,大家可以在B站等平台免费观看,这个课程我从19年就接触过,当时断断续续看了一部分,没有坚持下去我觉得主要问题还是出在没有一个很具体的项目目标,比如在第一周产出一个识猫程序,第二周产出识别手写数字的程序。所以我这次汲取教训,第一周的目标就很明确,必须无任何帮助,全程100%手写识猫程序。话不多说,本篇开始第一周的内容:深度学习笔记,目标是全手写复现课程中的识猫程序,针对复现过程中的错误,我会重点分析。为了配合课程学习,我准备了鱼书《深度学习入门》辅助学习。

知识准备(基于assignment2-1笔记)

np.exp() 和 math.exp() 的区别

  • • math.exp用来处理标量
  • • np.exp()用来处理矩阵和向量

非线性函数:

  • • 有时也被称作logistics函数,不仅应用于机器学习(逻辑回归),也应用于深度学习领域。
  • • 代码写法:s = 1/(1+np.exp(-x))
  • • 对s求导得到方向传播的梯度函数:ds=s*(1-s)

数组重塑(reshaping array)

image是长度2高度3,3层的形状的图像(length, height, 3),需将其重塑为:(length*height*3, 1)代码实现:v=image.reshape((image.shape[0]*image.shape[1]*image.shape[2],1))也可以将两边的圆括号(元组)改为[]列表,也可以两边不用括号

Normalizing rows(规范化行)

  • • 为什么要经过归一化处理:处理后的数据在梯度下降时更快
  • • 什么是归一化处理:1.对于一行向量 ,L2 范数(欧几里得模长) 定义:就是向量从原点到该点的直线距离,范数就是向量的 “长度”或者说是“大小”2.归一化指将每一行向量x转换为x/‖x‖(即用每一行向量x除以该行的范数)3.归一化数学意义:xnorm=x/‖x‖这个操作叫单位化(即归一化为单位向量):除以自身长度后,新向量的范数一定等于 1以下是我对该知识点进行的详细解释,力求形象生动

广播机制(broadcasting)

是数值计算库(尤其是 Python 的 NumPy 和 PyTorch)中的一项核心功能。它允许我们在对形状(shape)不同的数组进行算术运算时,无需显式地复制数据或手动调整维度,就能自动将较小的数组“扩展”以匹配较大数组的形状,从而完成逐元素的运算

分清 dot、outer、逐元素乘法 mul ()、gdot 之间的区别

操作类型
别名
运算规则
输出结果
常用 API
mul
Hadamard 积
对应位置元素相乘
同形状张量
torch.mul()
np.multiply()
dot
内积 / 点积
对应元素相乘后求和
标量 (Scalar)
torch.dot()
np.dot()
outer
外积
元素两两交叉相乘
二维矩阵
torch.outer()
np.outer()

两种损失函数的实现

L1损失函数:

代码实现:loss = np.sum(np.abs(y - yhat))L2 损失函数:代码实现:loss=np.dot((y-yhat),(y-yhat).T)(这里的y-yhat是一个二维矩阵,矩阵点积:np.dot(A, B) 要求A 的列数 = B 的行数,但A,B尺寸一致时,就需要对B进行转置,从而满足行和列相等,其输出也是一个二维矩阵)

深度学习(基于assignment2-2笔记)

以下内容为复现深度学习之识猫程序的踩坑记录,针对复现过程中的错误进行改正并解析,没有详细的知识讲解,大家可以进入课程或者作业详细了解每个步骤详细知识点,文尾也会补充相关知识点用以加强对代码的理解。

载入必要的库文件

import numpy as np  # 导入NumPy库并简写为np,用于高效的矩阵运算和数据处理import matplotlib.pyplot as plt  # 导入Matplotlib的绘图模块,用于数据可视化(如绘制损失曲线、展示图片)import h5py  # 导入HDF5文件处理库,用于读取和写入深度学习常用的大规模数据集文件import scipy  # 导入SciPy科学计算库,提供高级数学和图像处理功能from scipy import ndimage  # 从SciPy中导入ndimage模块,专门用于多维图像的处理(如缩放、旋转、滤波)from PIL import Image  # 导入Python图像库(Pillow),用于图像的打开、修改和保存等基础操作from lr_utils import load_dataset  # 从自定义工具模块中导入数据加载函数,用于读取并解析猫狗分类等数据集%matplotlib inline  # Jupyter Notebook专属魔法命令,让绘制的图表直接嵌入在当前代码块的下方显示

一.数据预处理

  1. 1. 数据加载load
  2. 2. 确认数据尺寸 shape
  3. 3. 数据重塑之——扁平化 flatten
  4. 4. 数据标准化 normalize
代码复现:
代码纠正:.T 代表转置操作,是对数组的转置,而不是对size的转置,它必须作用于 reshape 方法返回的数组对象上,因此 .T 不能放在 reshape 的括号内部
修改后的代码:

二.训练

  1. 1. w,b参数初始化 (initialize)
  2. 2. 正向传播求成本 cost  (forward)
  3. 3. 反向传播求梯度 dw,db (backward)
  4. 4. 使用梯度dw,db更新参数w,b (optimize)
  5. 代码复现:
    代码纠正:
  6. 错误1:函数模块我们只关心这个模块起到什么作用,它需要输入什么类型数据(形参),然后能够输出什么样的成果,它在建立时不用输入具体值
  7. 错误5:损失函数中需要的是逐元素相乘(*),也就是第一个样本的Y乘以第一个样本A的log函数;
  8. 错误6:X.shape=(12288,209),(A-Y).shape=(1,209),dot需形状首尾相等也就是前矩阵列数等于后矩阵行数,X的形状是(12288, 209),(A-Y)的形状是(1, 209),需要将(A-Y)转置为(209, 1),然后做np.dot(X, (A-Y).T),结果形状为(12288, 1),与w的维度一致
  9. 修改后的代码:

三.预测

根据训练好的参数(w,b)进行预测(再来一次正向传播)

代码复现:
代码纠正:

1.该函数模块作用是根据训练好的w,b及待预测样本X,求预测值Y_predict,函数括号内只是声明一个形参,要确认清楚函数作用。

2.Y_predict,是新的变量,需提前声明,这里不建议使用空列表赋值(Y_predict = []),使用np.zeros()赋值是常规方法,在创建时就分配好固定大小和内存容量

np.zeros()赋值时,numpy数组在内存中是连续分配的,支持底层C语言加速,可直接通过索引来访问并修改对应位置的值,若用空列表赋值后续需要append()方法,循环中不断调用append,每次都可能触发列表重新分配和内存拷贝,在处理大规模数据(比如 m = 100000)时,速度会比 NumPy 慢几十倍甚至上百倍;

修改后的代码:

四.整合以上函数,构建识猫模型

代码复现:
代码纠正:1.需增加预测成功率计算:①计算预测和实际的差值;②计算差值的绝对值(使得预测失败的差值都是1);③对所有差值的绝对值求平均值即得错误率④1-错误率 = 正确率
修改后的代码:

五.调用模型

调用预测模型对实际样本进行预测:
输出结果:

六.识猫程序完整代码

#导入库文件import numpy as npimport matplotlib.pyplot as pltimport h5pyimport scipyfrom PIL import Imagefrom scipy import ndimagefrom lr_utils import load_dataset%matplotlib inline#一.数据预处理    #0.加载数据train_set_x_orig, train_set_y, test_set_x_orig, test_set_y, classes = load_dataset() #用于导入数据    #1.确认数据尺寸 train_set_X_origm_train = train_set_x_orig.shape[0] #确认训练样本量m_test = test_set_x_orig.shape[0]#确认测试样本量num_px=train_set_x_orig.shape[1]  #图片的宽度    #2.数据扁平化;flatten_train_set_Xflatten_train_set_x = train_set_x_orig.reshape(m_train,-1).Tflatten_test_set_x = test_set_x_orig.reshape(m_test,-1).T#注.T 代表转置操作,它必须作用于 reshape 方法返回的数组对象上,因此 .T 不能放在 reshape 的括号内部。    #3.数据标准化normalize:/255train_set_x = flatten_train_set_x/255test_set_x = flatten_test_set_x/255#二.训练def sigmoid(z):    s=1/(1+np.exp(-z))    return s    #1.参数初始化initialize()def initialize_with_zeros(dim):    w = np.zeros((dim,1))  #形参dim表示样本行数    b = 0    return w,b    #2.前向传播求costdef propagate(X,Y,w,b):    m = X.shape[1]  #计算样本量    Z = np.dot(w.T,X)+b    A = sigmoid(Z)    #cost = (1/m_train)np.sum(-np.dot(Y,np.log(A))-np.dot((1-Y),np.log(1-A)))    # *为对应元素相乘,(1, m) * (1, m) 结果是 (1, m)表示第一个样本的Y乘以第一个样本A的log函数,这正是我们想要的矩阵乘法np.dot只用于计算线性部分z=w.TX+b,不用于损失函数计算        cost=(-1/m)*np.sum(Y*np.log(A)+(1-Y)*np.log(1-A))# compute cost        #3.反向传播求梯度    dw = (1/m)*np.dot(X,(A-Y).T)  #错误代码:dw = (1/m)*np.dot(X,(A-Y))                             #这里:X.shape=(12288,209),(A-Y).shape=(1,209),使用np.dot无法计算,因为尺寸需首尾相等,因此(A-Y)需转置,转置后计算点积:尺寸(12288,209)与尺寸(209,1)点积的结果得到dw尺寸(12288,1)    db = (1/m)*np.sum(A-Y)    grads = {'dw':dw,            'db':db}    return grads,cost#,w,b  这里返回值不需要w,b,我们只需要一次传播得到的成本和反向得到的梯度,用于后续的参数更新def optimize(w,b,X,Y,num_iterations,learning_rate):    costs = []    for i in range(num_iterations):        grads,cost= propagate(X,Y,w,b)        #获取梯度        dw = grads['dw']        db = grads['db']        #更新参数        w = w-learning_rate*dw        b = b-learning_rate*db        #记录成本并打印        if i%100 == 0:            costs.append(cost)#每100次记一次            print(costs)        #将更新好的参数w,b放进字典储存    params = {'w':w,              'b':b}    return params,costs  #返回更新好的参数和全部训练样本的平均成本#三.预测    #1.根据训练好的w,b求y_predict#输入优化后的w,b以及预测对象X,#模块函数不关心输入具体是哪个值(实参),它只是声明了一个形式参数#输出是预测出来的Y_predictdef predict(w,b,X):    #预测函数的输入为w,b,X,其输出为预测值Y_predict,是一个矩阵,是一个新的变量,需提前声明    # 不建议使用空列表赋值,后续代码需要以索引来赋值,    # 使用np.zeros()在创建是就以及分配好固定的大小和内存容量,numpy数组在内存中是连续分配的,支持底层的 C 语言加速,可直接通过[0,i]来访问并修改对应位置的值    #如果直接赋空列表后续需要append()方法,在循环中不断调用append,每次都可能触发列表重新分配和内存拷贝,性能差异明显在处理大规模数据(比如 m = 100000)时,速度会比 NumPy 慢几十倍甚至上百倍    m = X.shape[1]  #Y_predict的列数同X的列数,也就是样本数量    Y_predict = np.zeros((1,m))  #新建一个全零向量Y_predict    #防御性编程,确保参数w的尺寸和X相匹配,确保后面计算不出错    w = w.reshape(X.shape[0],1)    Z = np.dot(w.T,X)+b    # sigmoid(Z) 得出来的数据并非0,1而是一个在0和1之间的浮点数    A = sigmoid(Z)    #for 循环,遍历向量A(尺寸为1行m列),判断元素值与0.5大小并赋值0或1.    for i in range(A.shape[1]):        if A[0,i] <= 0.5:            Y_predict[0,i] = 0        else:            Y_predict[0,i] = 1    return Y_predict#四.对以上函数进行整合,构建识猫模型def model(X_train,Y_train,X_test,Y_test,num_iterations = 1000,learning_rate = 0.05):    #参数初始化    w,b = initialize_with_zeros(X_train.shape[0])    #参数优化后获取    params,costs = optimize(w,b,X_train,Y_train,num_iterations,learning_rate)    w = params['w']    b = params['b']    #预测测试集    Y_predict_train = predict(w,b,X_train)    Y_predict_test = predict(w,b,X_test)    #~~~~~~~~~计算成功率~~~~~~~~~~~    #①计算差值  ②计算差值的绝对值(使得预测失败的差值都是1)③对所有差值的绝对值求平均值即得错误率④1-错误率 = 正确率    train_success_rate = (1 - np.mean(np.abs(Y_predict_train-Y_train)))*100    test_success_rate = (1 - np.mean(np.abs(Y_predict_test-Y_test)))*100    print(f'训练集中识猫系统预测成功率是:{train_success_rate}%')    print(f'测试集中识猫系统预测成功率是:{test_success_rate}%')    #赋值d    d = {"costs":costs,         "Y_predict_train":Y_predict_train,         "Y_predict_test":Y_predict_test,         "w":w,         "b":b,         "learning_rate":learning_rate,         "num_iterations":num_iterations}    return d#五.调用模块预测d = model(train_set_x,train_set_y,test_set_x,test_set_y,num_iterations = 2000,learning_rate =0.005)

知识点补充

这里对以上代码未详细说明的部分知识点进行说明

1. 核心公式与说明

在吴恩达的深度学习课程中,逻辑回归(Logistic Regression)的正向传播和反向传播(梯度下降)是理解神经网络的基础。

前向传播 (Forward Propagation)

  • • : 输入特征矩阵(维度为  为样本数)。
  • • : 模型的权重和偏置参数。
  • • : Sigmoid 激活函数,将线性输出映射到  之间,表示预测为正类的概率。

损失函数与代价函数 (Loss & Cost Function)

  • • : 单个样本的损失,衡量预测值与真实标签的差距。
  • • : 整个训练集的代价函数,是模型需要最小化的目标。

反向传播 (Backward Propagation / 梯度计算)

  • • : 损失函数对  的梯度,形式极其简洁,是 Sigmoid 交叉熵损失的优良性质。
  • • : 代价函数对参数  和  的偏导数,用于更新参数。

参数更新 (Parameter Update)

  • • : 学习率(Learning Rate),控制每次参数更新的步长。

2. 对应的 Python 代码实现

以下是使用 NumPy 实现的向量化(Vectorized)逻辑回归核心代码,避免了低效的 for 循环:

import numpy as np# 1. Sigmoid 激活函数def sigmoid(z):    return 1 / (1 + np.exp(-z))# 2. 前向传播与代价函数def propagate(w, b, X, Y):    m = X.shape[1]  # 样本数量    # 前向传播    A = sigmoid(np.dot(w.T, X) + b)    # 计算代价函数 (加入极小值 1e-8 防止 log(0) 报错)    cost = -np.sum(Y * np.log(A) + (1 - Y) * np.log(1 - A)) / m    # 3. 反向传播计算梯度    dZ = A - Y    dw = np.dot(X, dZ.T) / m    db = np.sum(dZ) / m    grads = {"dw": dw, "db": db}    return grads, cost# 4. 梯度下降优化def optimize(w, b, X, Y, num_iterations, learning_rate):    for i in range(num_iterations):        grads, cost = propagate(w, b, X, Y)        # 提取梯度        dw = grads["dw"]        db = grads["db"]        # 参数更新        w = w - learning_rate * dw        b = b - learning_rate * db        # 每100次迭代打印一次代价        if i % 100 == 0:            print(f"Iteration {i}, Cost: {cost:.4f}")    params = {"w": w, "b": b}    return params

代码亮点说明

  • • 全向量化计算np.dot(w.T, X) 一次性计算了所有  个样本的  值,极大提升了计算效率。
  • • 梯度公式的矩阵形式dw = np.dot(X, dZ.T) / m 完美对应了公式 ,无需对每个样本单独求导再累加。

3.学习率和迭代次数的选择

学习率(learning rate)控制着模型每次更新参数时“走多远”。如果学习率太大,模型可能会在最优解附近震荡甚至发散(Loss 变成 NaN);如果太小,模型收敛极慢,甚至容易陷入局部最优,对于此次代码中使用的这种基础梯度下降算法,常见的初始学习率通常在 0.01到 0.1之间,我们代码中的0.05是个合理的起点

 迭代次数(iterations) 决定了模型在训练集上遍历学习的遍数。迭代太少会导  致欠拟合,太多会导致过拟合(在训练集表现好,但在测试集表现差)。 对    于相对简单的监督学习问题(如基础的图像二分类),通常 1000到 5000次    迭代基本可以达到较好的收敛效果。代码中的2000可以作为初步测试的基准。

结语

下一篇将更新神经网络方面内容,对于本篇各位同学和前辈有什么心得或建议欢迎留言一起交流。

谢谢看完,晚安~~

推荐阅读

对于相对简单的监督学习问题(如基础的图像二分类),通常 1000 到 5000 次迭代基本可以达到较好的收敛效果。你代码中的 1000 可以作为初步测试的基准。 、

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-02 23:30:07 HTTP/2.0 GET : https://f.mffb.com.cn/a/501085.html
  2. 运行时间 : 0.253060s [ 吞吐率:3.95req/s ] 内存消耗:4,541.56kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=e49ba62c8887c75b807e5392e943b774
  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.000960s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001451s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.022780s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000323s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000713s ]
  6. SELECT * FROM `set` [ RunTime:0.000275s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000793s ]
  8. SELECT * FROM `article` WHERE `id` = 501085 LIMIT 1 [ RunTime:0.006562s ]
  9. UPDATE `article` SET `lasttime` = 1783006207 WHERE `id` = 501085 [ RunTime:0.006866s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000287s ]
  11. SELECT * FROM `article` WHERE `id` < 501085 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.016512s ]
  12. SELECT * FROM `article` WHERE `id` > 501085 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.015945s ]
  13. SELECT * FROM `article` WHERE `id` < 501085 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004830s ]
  14. SELECT * FROM `article` WHERE `id` < 501085 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.012144s ]
  15. SELECT * FROM `article` WHERE `id` < 501085 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003156s ]
0.254735s