当前位置:首页>python>液态神经网络:像水一样流动的AI(Python)

液态神经网络:像水一样流动的AI(Python)

  • 2026-02-28 01:15:23
液态神经网络:像水一样流动的AI(Python)

想象一下,你训练了一个自动驾驶模型,它在夏季的森林道路上表现完美。但当秋天来临,落叶覆盖了路面,这个“聪明”的模型却突然变得困惑,不知道该如何前进。

这就是传统神经网络的局限性——它们在训练完成后就“固化”了,难以适应环境的变化。

但如果我们能让神经网络像水一样“流动”,根据输入不断调整自身呢?

这正是液态神经网络(Liquid Neural Networks,LNNs)所做的。

从一只小虫子开始的革命

液态神经网络的诞生,源于对一种微小生物的好奇。

麻省理工学院的研究员拉明·哈萨尼(Ramin Hasani)在显微镜下观察秀丽隐杆线虫(C. Elegans)时,被这个小生物的神奇之处深深吸引:它全身只有302个神经元,却能产生极其复杂的动态行为——觅食、交配、学习、躲避危险。

为什么拥有数十亿参数的人工神经网络,有时还不如一只小虫子聪明?

哈萨尼意识到,问题不在于神经元的数量,而在于质量。传统神经元的输出只是一个简单的数字(0或1),而生物神经元的行为却由复杂的微分方程控制,其状态随时间连续变化。

液态神经网络 vs 传统神经网络:有何不同?

1. 从“固态”到“液态”

传统神经网络在训练完成后,权重就固定下来,不再改变。这就像一块石头,你扔进水里,它不会对环境做出任何调整。

而液态神经网络的核心创新在于引入了液体时间常数(Liquid Time Constant,LTC)

这个看似复杂的术语,实际上描述了一个简单的想法:让网络能够根据输入调整自己的“反应速度”

在数学上,液态神经元的状态变化由以下微分方程描述:

τ dh(t)/dt = -h(t) + tanh(Wx(t) + Uh(t))

这里的τ(时间常数)不是固定的,而是可学习的参数,它控制着神经元对输入的反应速度。当遇到重要信息时,时间常数变小,神经元快速响应;当处理噪声时,时间常数变大,神经元变得“迟钝”。

2. 连续时间 vs 离散时间

传统循环神经网络(RNN)只在离散的时间步上更新状态,而液态神经网络在连续时间上演化。这意味着它们可以更自然地处理非均匀采样的时间序列数据——比如传感器读数、医疗记录,或者人类对话中的停顿。

3. 极小模型,极大效果

最令人惊讶的是液态神经网络的紧凑性

在一项自动驾驶演示中,哈萨尼仅用19个液态神经元就能引导车辆,而传统模型需要数万甚至数十万个节点。在另一项无人机导航实验中,只有90个液态神经元的网络就能完成复杂的森林飞行任务,而且注意力集中在道路地平线和路边——就像人类司机一样!

液态神经网络的超能力

✅ 适应性:训练后仍可学习

大多数神经网络在训练阶段之后就“定型”了。但液态神经网络不同——由于液体时间常数的存在,它们在训练后仍能适应新的输入模式

在无人机实验中,研究团队训练模型在夏季森林中寻找红色物体。当季节变化,背景变成秋季的棕色和冬季的裸露地面时,只有液态神经网络仍然成功找到目标,其他模型都被新背景“迷惑”了。-

✅ 因果性:真正理解“为什么”

丹妮拉·鲁斯(Daniela Rus,MIT CSAIL主任)解释说:“如果你有一个将火与热关联起来的模型,这个模型并不真正理解燃烧和火的物理过程。”

液态神经网络被证明能够学习因果关系,而不仅仅是统计关联。这让它们在安全关键应用(如自动驾驶、医疗诊断)中更加可靠。

✅ 鲁棒性:过滤噪声,抓住本质

由于时间常数可以根据输入动态调整,液态神经网络对噪声和意外数据具有天然的抵抗力。比如,在大雨遮挡自动驾驶汽车摄像头视野的情况下,液态网络仍能保持稳定。

✅ 可解释性:不再是一个“黑箱”

大型神经网络之所以难以解释,是因为参数太多。液态网络通过缩小规模(而不是扩大)变得更加透明。你可以不仅知道模型做了什么决策,还能理解为什么这么做。

最新突破:液态基础模型

液态神经网络的概念已经从理论走向实践。

2025年,Liquid AI公司发布了名为 “Nanos”的超小型基础模型,参数规模仅3.5亿到26亿,却能在专门任务上达到GPT-4o级别的性能

这些模型足够小,可以直接在手机、笔记本电脑和嵌入式设备上本地运行:

  • LFM2-350M-ENJP-MT:可在智能手机上运行的日英翻译模型

  • LFM-350M-Extract:多语言数据提取模型,能从发票邮件中提取信息并格式化为JSON

通过在设备端本地处理AI推理,既保证了隐私安全,又降低了能耗。AMD首席技术官马克·佩珀马斯特评论道:“设备端智能是可持续地大规模推广AI的关键。”-

挑战与局限

  • 梯度消失问题:虽然避免了梯度爆炸,但长期依赖性学习仍是挑战 

  • 求解器依赖:精度和效率受ODE求解器选择的影响 

  • 训练速度:相比传统网络,训练过程可能较慢 

因此,在实际应用中,液态神经网络更多是与Transformer等架构形成互补,而非完全替代。

实践:用Python实现一个液态神经网络

import numpy as npimport matplotlib.pyplot as pltimport timeplt.rcParams['font.sans-serif'] = ['SimHei''Microsoft YaHei''DejaVu Sans']plt.rcParams['axes.unicode_minus'] = False# 设置随机种子np.random.seed(42)# ======================# 1. 数据准备# ======================def generate_data():    """生成训练数据:从sin(t)预测cos(t)"""    t = np.linspace(04 * np.pi, 100)    X = np.sin(t).reshape(-11)    Y = np.cos(t).reshape(-11)    return t, X, Yt, X, Y = generate_data()print(f"数据形状 - X: {X.shape}, Y: {Y.shape}")# ======================# 2. 液态神经元层# ======================class LiquidLayer:    """液态神经元层"""    def __init__(self, input_size, hidden_size, dt=0.1):        self.input_size = input_size        self.hidden_size = hidden_size        self.dt = dt        # 初始化参数        self.W_in = np.random.randn(hidden_size, input_size) * 0.1        self.W_h = np.random.randn(hidden_size, hidden_size) * 0.1        self.bias = np.zeros(hidden_size)        self.log_tau = np.random.randn(hidden_size) * 0.1    @property    def tau(self):        return np.exp(self.log_tau) + 0.1    def forward(self, x, return_all=False):        """        前向传播        x: 输入序列 [seq_len, input_size]        """        seq_len = x.shape[0]        h = np.zeros(self.hidden_size)        h_seq = []        for t in range(seq_len):            x_t = x[t]            # 液态神经元动力学            pre_act = np.dot(self.W_in, x_t) + np.dot(self.W_h, h) + self.bias            dh = (-h + np.tanh(pre_act)) / self.tau            h = h + self.dt * dh            h_seq.append(h.copy())        h_seq = np.array(h_seq)        if return_all:            return h_seq        else:            return h_seq[-1]  # 只返回最后一个时间步# ======================# 3. 液态神经网络# ======================class LiquidNeuralNetwork:    """液态神经网络"""    def __init__(self, input_size=1, hidden_size=10, output_size=1, lr=0.01):        self.hidden_size = hidden_size        self.lr = lr        # 液态层        self.liquid = LiquidLayer(input_size, hidden_size)        # 输出层        self.W_out = np.random.randn(output_size, hidden_size) * 0.1        self.b_out = np.zeros(output_size)        self.loss_history = []    def forward(self, x):        """前向传播 - 返回最后一个时间步的预测"""        h_last = self.liquid.forward(x, return_all=False)        y_pred = np.dot(self.W_out, h_last) + self.b_out        return y_pred, h_last    def forward_all(self, x):        """前向传播 - 返回所有时间步的隐藏状态"""        h_seq = self.liquid.forward(x, return_all=True)        return h_seq    def compute_loss(self, y_pred, y_true):        """计算损失"""        return 0.5 * np.mean((y_pred - y_true) ** 2)    def train_step(self, x, y_true):        """单步训练"""        # 保存当前参数        W_out_old = self.W_out.copy()        b_out_old = self.b_out.copy()        log_tau_old = self.liquid.log_tau.copy()        # 前向传播        y_pred, h_last = self.forward(x)        loss = self.compute_loss(y_pred, y_true)        # 计算输出层梯度(解析梯度)        error = y_pred - y_true  # [output_size]        grad_W_out = np.outer(error, h_last)  # [output_size, hidden_size]        grad_b_out = error  # [output_size]        # 更新输出层        self.W_out -= self.lr * grad_W_out        self.b_out -= self.lr * grad_b_out        # 计算液态层梯度(数值梯度)        eps = 1e-4        # 对每个液态时间常数计算梯度        for i in range(self.hidden_size):            # 保存原始值            original_tau = self.liquid.log_tau[i]            # 正向扰动            self.liquid.log_tau[i] = original_tau + eps            y_pred_plus, _ = self.forward(x)            loss_plus = self.compute_loss(y_pred_plus, y_true)            # 负向扰动            self.liquid.log_tau[i] = original_tau - eps            y_pred_minus, _ = self.forward(x)            loss_minus = self.compute_loss(y_pred_minus, y_true)            # 恢复原始值            self.liquid.log_tau[i] = original_tau            # 计算梯度并更新            grad_tau = (loss_plus - loss_minus) / (2 * eps)            self.liquid.log_tau[i] -= self.lr * grad_tau * 0.1        return loss    def train(self, X, Y, epochs=100):        """训练模型"""        print("开始训练...")        start_time = time.time()        for epoch in range(epochs):            # 对每个时间点进行训练(使用最后一个点的目标值)            total_loss = 0            for i in range(len(X)):                x_seq = X[:i + 1]  # 使用到当前时间点的所有历史                y_true = Y[i]  # 当前时间点的目标值                loss = self.train_step(x_seq, y_true)                total_loss += loss            avg_loss = total_loss / len(X)            self.loss_history.append(avg_loss)            if (epoch + 1) % 20 == 0:                print(f'Epoch [{epoch + 1}/{epochs}], Loss: {avg_loss:.6f}')        train_time = time.time() - start_time        print(f"训练完成,用时: {train_time:.2f} 秒")        return self.loss_history    def predict(self, X):        """预测整个序列"""        predictions = []        for i in range(len(X)):            x_seq = X[:i + 1]            y_pred, _ = self.forward(x_seq)            predictions.append(y_pred[0])        return np.array(predictions)    def get_neuron_responses(self, X):        """获取所有神经元的响应"""        h_seq = self.forward_all(X)        return h_seq# ======================# 4. 训练模型# ======================print("\n" + "=" * 50)print("创建液态神经网络...")model = LiquidNeuralNetwork(    input_size=1,    hidden_size=8,  # 8个神经元,足够快    output_size=1,    lr=0.005  # 学习率)# 训练loss_history = model.train(X, Y, epochs=80)# ======================# 5. 预测# ======================Y_pred = model.predict(X)# ======================# 6. 可视化# ======================fig, axes = plt.subplots(23, figsize=(159))# 图1: 训练损失ax1 = axes[00]ax1.plot(loss_history, 'b-', linewidth=2, marker='o', markersize=3)ax1.set_title(f'训练损失曲线\n最终损失: {loss_history[-1]:.4f}', fontsize=12)ax1.set_xlabel('Epoch')ax1.set_ylabel('Loss')ax1.grid(True, alpha=0.3)# 图2: 预测 vs 真实值ax2 = axes[01]ax2.plot(t, Y.flatten(), 'g-', label='真实值 cos(t)', linewidth=2)ax2.plot(t, Y_pred, 'r--', label='预测值', linewidth=2)ax2.set_title('预测结果对比', fontsize=12)ax2.set_xlabel('时间 t')ax2.legend()ax2.grid(True, alpha=0.3)# 图3: 预测误差ax3 = axes[02]error = Y.flatten() - Y_predmse = np.mean(error ** 2)ax3.bar(t, error, width=0.1, color='purple', alpha=0.6)ax3.set_title(f'预测误差 (MSE: {mse:.4f})', fontsize=12)ax3.set_xlabel('时间 t')ax3.axhline(y=0, color='black', linestyle='-', linewidth=1)ax3.grid(True, alpha=0.3)# 图4: 液态时间常数ax4 = axes[10]tau_values = model.liquid.taucolors = plt.cm.viridis(np.linspace(01len(tau_values)))bars = ax4.bar(range(len(tau_values)), tau_values, color=colors, alpha=0.7)ax4.set_title('液态时间常数分布\n(每个神经元独特的反应速度)', fontsize=12)ax4.set_xlabel('神经元索引')ax4.set_ylabel('τ 值')ax4.grid(True, alpha=0.3)# 在每个柱子上标出数值for i, (bar, val) in enumerate(zip(bars, tau_values)):    ax4.text(bar.get_x() + bar.get_width() / 2, bar.get_height() + 0.05,             f'{val:.2f}', ha='center', va='bottom', fontsize=8)# 图5: 神经元响应热力图ax5 = axes[11]neuron_responses = model.get_neuron_responses(X)im = ax5.imshow(neuron_responses.T, aspect='auto', cmap='viridis',                extent=[0len(t), 0, model.hidden_size])ax5.set_title('神经元响应热力图\n(颜色越亮=激活越强)', fontsize=12)ax5.set_xlabel('时间步')ax5.set_ylabel('神经元索引')plt.colorbar(im, ax=ax5)# 图6: 权重分布ax6 = axes[12]all_weights = np.concatenate([    model.liquid.W_in.flatten(),    model.liquid.W_h.flatten(),    model.W_out.flatten()])ax6.hist(all_weights, bins=15, color='orange', alpha=0.7, edgecolor='black')ax6.set_title('网络权重分布', fontsize=12)ax6.set_xlabel('权重值')ax6.set_ylabel('频次')ax6.grid(True, alpha=0.3)plt.suptitle('液态神经网络 (Liquid Neural Network) 演示', fontsize=14, fontweight='bold')plt.tight_layout()plt.savefig('liquid_nn_demo.png', dpi=150, bbox_inches='tight')plt.show()# ======================# 7. 展示不同时间常数的影响# ======================fig2, axes = plt.subplots(22, figsize=(1410))# 创建一个测试信号t_test = np.linspace(010200)test_signal = np.sin(t_test) + 0.5 * np.sin(3 * t_test)# 展示不同tau值的影响ax1 = axes[00]tau_examples = [0.20.51.02.05.0]colors = plt.cm.rainbow(np.linspace(01len(tau_examples)))for tau_val, color in zip(tau_examples, colors):    # 创建一个简化的一阶系统响应    response = np.zeros_like(t_test)    h = 0    dt = t_test[1] - t_test[0]    for i, x in enumerate(test_signal):        dh = (-h + np.tanh(x)) / tau_val        h = h + dt * dh        response[i] = h    ax1.plot(t_test, response, color=color, label=f'τ={tau_val}', linewidth=2)ax1.set_title('不同时间常数对信号的影响', fontsize=14, fontweight='bold')ax1.set_xlabel('时间')ax1.set_ylabel('响应')ax1.legend()ax1.grid(True, alpha=0.3)# 频率响应ax2 = axes[01]freqs = np.logspace(-22100)for tau_val in tau_examples:    gain = 1 / np.sqrt(1 + (freqs * tau_val) ** 2)    ax2.loglog(freqs, gain, label=f'τ={tau_val}', linewidth=2)ax2.set_title('频率响应特性', fontsize=14, fontweight='bold')ax2.set_xlabel('频率 (rad/s)')ax2.set_ylabel('增益')ax2.legend()ax2.grid(True, alpha=0.3, which='both')# 训练后的神经元响应ax3 = axes[10]for i in range(min(5, model.hidden_size)):    ax3.plot(range(len(neuron_responses)), neuron_responses[:, i],             label=f'神经元 {i} (τ={model.liquid.tau[i]:.2f})',             linewidth=1.5, alpha=0.8)ax3.set_title('训练后神经元的实际响应', fontsize=14, fontweight='bold')ax3.set_xlabel('时间步')ax3.set_ylabel('激活值')ax3.legend()ax3.grid(True, alpha=0.3)# 训练后的tau分布直方图ax4 = axes[11]ax4.hist(model.liquid.tau, bins=8, color='#ff7f0e', alpha=0.7, edgecolor='black')ax4.axvline(np.mean(model.liquid.tau), color='red', linestyle='--',            linewidth=2, label=f'均值: {np.mean(model.liquid.tau):.2f}')ax4.axvline(np.median(model.liquid.tau), color='blue', linestyle='--',            linewidth=2, label=f'中位数: {np.median(model.liquid.tau):.2f}')ax4.set_title('液态时间常数分布直方图', fontsize=14, fontweight='bold')ax4.set_xlabel('τ 值')ax4.set_ylabel('频次')ax4.legend()ax4.grid(True, alpha=0.3)plt.tight_layout()plt.savefig('liquid_analysis.png', dpi=150)plt.show()# ======================# 8. 统计信息# ======================print("\n" + "=" * 60)print("训练统计")print("=" * 60)print(f"网络结构:")print(f"  - 输入维度: 1")print(f"  - 隐藏层神经元: {model.hidden_size}")print(f"  - 输出维度: 1")print(f"\n训练结果:")print(f"  - 初始损失: {loss_history[0]:.6f}")print(f"  - 最终损失: {loss_history[-1]:.6f}")print(f"  - 损失下降比例: {loss_history[0] / loss_history[-1]:.2f}倍")print(f"\n液态时间常数:")print(f"  - 最小值: {np.min(model.liquid.tau):.3f}")print(f"  - 最大值: {np.max(model.liquid.tau):.3f}")print(f"  - 均值: {np.mean(model.liquid.tau):.3f}")print(f"  - 标准差: {np.std(model.liquid.tau):.3f}")print(f"\n预测性能:")print(f"  - MSE: {mse:.6f}")print(f"  - MAE: {np.mean(np.abs(error)):.6f}")print(f"  - R²: {1 - np.sum(error ** 2) / np.sum((Y.flatten() - np.mean(Y.flatten())) ** 2):.4f}")print("=" * 60)# ======================# 9. 测试新信号# ======================print("\n测试新信号...")t_new = np.linspace(08 * np.pi, 200)X_new = np.sin(t_new).reshape(-11) + 0.3 * np.sin(3 * t_new).reshape(-11)Y_new = np.cos(t_new).reshape(-11)  # 理想情况应该学到cos# 预测Y_new_pred = model.predict(X_new)fig3, (ax1, ax2) = plt.subplots(21, figsize=(126))ax1.plot(t_new, X_new.flatten(), 'b-', label='输入信号', linewidth=1.5)ax1.set_title('测试输入信号', fontsize=14)ax1.set_xlabel('时间')ax1.set_ylabel('幅值')ax1.grid(True, alpha=0.3)ax1.legend()ax2.plot(t_new, Y_new_pred, 'r-', label='网络输出', linewidth=2)ax2.plot(t_new, Y_new.flatten(), 'g--', label='理想输出 cos(t)', linewidth=1.5, alpha=0.7)ax2.set_title('网络对新信号的响应', fontsize=14)ax2.set_xlabel('时间')ax2.set_ylabel('预测值')ax2.grid(True, alpha=0.3)ax2.legend()plt.tight_layout()plt.savefig('lnn_test_signal.png', dpi=150)plt.show()
获取源代码请点击“阅读原文”

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-28 12:37:52 HTTP/2.0 GET : https://f.mffb.com.cn/a/477393.html
  2. 运行时间 : 0.220002s [ 吞吐率:4.55req/s ] 内存消耗:5,161.55kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=704d6f407a609edf464cfea797ee553c
  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.000882s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001703s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.003255s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.006767s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001484s ]
  6. SELECT * FROM `set` [ RunTime:0.000561s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001516s ]
  8. SELECT * FROM `article` WHERE `id` = 477393 LIMIT 1 [ RunTime:0.002698s ]
  9. UPDATE `article` SET `lasttime` = 1772253472 WHERE `id` = 477393 [ RunTime:0.008757s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000750s ]
  11. SELECT * FROM `article` WHERE `id` < 477393 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001199s ]
  12. SELECT * FROM `article` WHERE `id` > 477393 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001265s ]
  13. SELECT * FROM `article` WHERE `id` < 477393 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.009725s ]
  14. SELECT * FROM `article` WHERE `id` < 477393 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.003191s ]
  15. SELECT * FROM `article` WHERE `id` < 477393 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002928s ]
0.223730s