[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-sksq96--pytorch-summary":3,"similar-sksq96--pytorch-summary":83},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":9,"readme_en":10,"readme_zh":11,"quickstart_zh":12,"use_case_zh":13,"hero_image_url":14,"owner_login":15,"owner_name":16,"owner_avatar_url":17,"owner_bio":18,"owner_company":19,"owner_location":20,"owner_email":21,"owner_twitter":15,"owner_website":20,"owner_url":22,"languages":23,"stars":28,"forks":29,"last_commit_at":30,"license":31,"difficulty_score":32,"env_os":33,"env_gpu":34,"env_ram":35,"env_deps":36,"category_tags":41,"github_topics":43,"view_count":48,"oss_zip_url":20,"oss_zip_packed_at":20,"status":49,"created_at":50,"updated_at":51,"faqs":52,"releases":82},9351,"sksq96\u002Fpytorch-summary","pytorch-summary","Model summary in PyTorch similar to `model.summary()` in Keras","pytorch-summary 是一款专为 PyTorch 框架设计的轻量级工具，旨在为深度学习模型提供类似 Keras 中 `model.summary()` 的直观概览功能。在 PyTorch 原生环境中，开发者通常只能打印出模型的层级结构，却难以直接获取每一层的输出形状、参数量以及内存占用等关键信息，这在调试复杂网络或评估资源需求时往往带来不便。pytorch-summary 通过执行一次前向传播，自动分析并生成详细的表格报告，清晰展示各层类型、输出维度、参数数量，甚至估算正向与反向传播所需的显存大小。\n\n该工具特别适合 PyTorch 开发者、算法研究人员及学生使用。无论是构建自定义的卷积神经网络（如 MNIST 分类器），还是加载预训练的大型模型（如 VGG16），只需一行代码即可快速洞察模型内部结构。其核心亮点在于能够补充原生 `print(model)` 无法提供的动态运行时信息，帮助用户高效排查维度不匹配错误，优化模型设计。需要注意的是，官方已推荐使用其升级版项目 torchinfo 以获得更丰富的功能，但 pytorch-summary 依然以其简洁易用的特性，成为理","pytorch-summary 是一款专为 PyTorch 框架设计的轻量级工具，旨在为深度学习模型提供类似 Keras 中 `model.summary()` 的直观概览功能。在 PyTorch 原生环境中，开发者通常只能打印出模型的层级结构，却难以直接获取每一层的输出形状、参数量以及内存占用等关键信息，这在调试复杂网络或评估资源需求时往往带来不便。pytorch-summary 通过执行一次前向传播，自动分析并生成详细的表格报告，清晰展示各层类型、输出维度、参数数量，甚至估算正向与反向传播所需的显存大小。\n\n该工具特别适合 PyTorch 开发者、算法研究人员及学生使用。无论是构建自定义的卷积神经网络（如 MNIST 分类器），还是加载预训练的大型模型（如 VGG16），只需一行代码即可快速洞察模型内部结构。其核心亮点在于能够补充原生 `print(model)` 无法提供的动态运行时信息，帮助用户高效排查维度不匹配错误，优化模型设计。需要注意的是，官方已推荐使用其升级版项目 torchinfo 以获得更丰富的功能，但 pytorch-summary 依然以其简洁易用的特性，成为理解模型架构的得力助手。","## Use the new and updated [torchinfo](https:\u002F\u002Fgithub.com\u002FTylerYep\u002Ftorchinfo).\n\n## Keras style `model.summary()` in PyTorch\n[![PyPI version](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Ftorchsummary.svg)](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Ftorchsummary)\n\nKeras has a neat API to view the visualization of the model which is very helpful while debugging your network. Here is a barebone code to try and mimic the same in PyTorch. The aim is to provide information complementary to, what is not provided by `print(your_model)` in PyTorch.\n\n### Usage\n\n- `pip install torchsummary` or \n- `git clone https:\u002F\u002Fgithub.com\u002Fsksq96\u002Fpytorch-summary`\n\n```python\nfrom torchsummary import summary\nsummary(your_model, input_size=(channels, H, W))\n```\n\n- Note that the `input_size` is required to make a forward pass through the network.\n\n### Examples\n\n#### CNN for MNIST\n\n\n```python\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom torchsummary import summary\n\nclass Net(nn.Module):\n    def __init__(self):\n        super(Net, self).__init__()\n        self.conv1 = nn.Conv2d(1, 10, kernel_size=5)\n        self.conv2 = nn.Conv2d(10, 20, kernel_size=5)\n        self.conv2_drop = nn.Dropout2d()\n        self.fc1 = nn.Linear(320, 50)\n        self.fc2 = nn.Linear(50, 10)\n\n    def forward(self, x):\n        x = F.relu(F.max_pool2d(self.conv1(x), 2))\n        x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))\n        x = x.view(-1, 320)\n        x = F.relu(self.fc1(x))\n        x = F.dropout(x, training=self.training)\n        x = self.fc2(x)\n        return F.log_softmax(x, dim=1)\n\ndevice = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\") # PyTorch v0.4.0\nmodel = Net().to(device)\n\nsummary(model, (1, 28, 28))\n```\n\n\n```\n----------------------------------------------------------------\n        Layer (type)               Output Shape         Param #\n================================================================\n            Conv2d-1           [-1, 10, 24, 24]             260\n            Conv2d-2             [-1, 20, 8, 8]           5,020\n         Dropout2d-3             [-1, 20, 8, 8]               0\n            Linear-4                   [-1, 50]          16,050\n            Linear-5                   [-1, 10]             510\n================================================================\nTotal params: 21,840\nTrainable params: 21,840\nNon-trainable params: 0\n----------------------------------------------------------------\nInput size (MB): 0.00\nForward\u002Fbackward pass size (MB): 0.06\nParams size (MB): 0.08\nEstimated Total Size (MB): 0.15\n----------------------------------------------------------------\n```\n\n\n#### VGG16\n\n\n```python\nimport torch\nfrom torchvision import models\nfrom torchsummary import summary\n\ndevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\nvgg = models.vgg16().to(device)\n\nsummary(vgg, (3, 224, 224))\n```\n\n\n```\n----------------------------------------------------------------\n        Layer (type)               Output Shape         Param #\n================================================================\n            Conv2d-1         [-1, 64, 224, 224]           1,792\n              ReLU-2         [-1, 64, 224, 224]               0\n            Conv2d-3         [-1, 64, 224, 224]          36,928\n              ReLU-4         [-1, 64, 224, 224]               0\n         MaxPool2d-5         [-1, 64, 112, 112]               0\n            Conv2d-6        [-1, 128, 112, 112]          73,856\n              ReLU-7        [-1, 128, 112, 112]               0\n            Conv2d-8        [-1, 128, 112, 112]         147,584\n              ReLU-9        [-1, 128, 112, 112]               0\n        MaxPool2d-10          [-1, 128, 56, 56]               0\n           Conv2d-11          [-1, 256, 56, 56]         295,168\n             ReLU-12          [-1, 256, 56, 56]               0\n           Conv2d-13          [-1, 256, 56, 56]         590,080\n             ReLU-14          [-1, 256, 56, 56]               0\n           Conv2d-15          [-1, 256, 56, 56]         590,080\n             ReLU-16          [-1, 256, 56, 56]               0\n        MaxPool2d-17          [-1, 256, 28, 28]               0\n           Conv2d-18          [-1, 512, 28, 28]       1,180,160\n             ReLU-19          [-1, 512, 28, 28]               0\n           Conv2d-20          [-1, 512, 28, 28]       2,359,808\n             ReLU-21          [-1, 512, 28, 28]               0\n           Conv2d-22          [-1, 512, 28, 28]       2,359,808\n             ReLU-23          [-1, 512, 28, 28]               0\n        MaxPool2d-24          [-1, 512, 14, 14]               0\n           Conv2d-25          [-1, 512, 14, 14]       2,359,808\n             ReLU-26          [-1, 512, 14, 14]               0\n           Conv2d-27          [-1, 512, 14, 14]       2,359,808\n             ReLU-28          [-1, 512, 14, 14]               0\n           Conv2d-29          [-1, 512, 14, 14]       2,359,808\n             ReLU-30          [-1, 512, 14, 14]               0\n        MaxPool2d-31            [-1, 512, 7, 7]               0\n           Linear-32                 [-1, 4096]     102,764,544\n             ReLU-33                 [-1, 4096]               0\n          Dropout-34                 [-1, 4096]               0\n           Linear-35                 [-1, 4096]      16,781,312\n             ReLU-36                 [-1, 4096]               0\n          Dropout-37                 [-1, 4096]               0\n           Linear-38                 [-1, 1000]       4,097,000\n================================================================\nTotal params: 138,357,544\nTrainable params: 138,357,544\nNon-trainable params: 0\n----------------------------------------------------------------\nInput size (MB): 0.57\nForward\u002Fbackward pass size (MB): 218.59\nParams size (MB): 527.79\nEstimated Total Size (MB): 746.96\n----------------------------------------------------------------\n```\n\n\n#### Multiple Inputs\n\n\n```python\nimport torch\nimport torch.nn as nn\nfrom torchsummary import summary\n\nclass SimpleConv(nn.Module):\n    def __init__(self):\n        super(SimpleConv, self).__init__()\n        self.features = nn.Sequential(\n            nn.Conv2d(1, 1, kernel_size=3, stride=1, padding=1),\n            nn.ReLU(),\n        )\n\n    def forward(self, x, y):\n        x1 = self.features(x)\n        x2 = self.features(y)\n        return x1, x2\n    \ndevice = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\nmodel = SimpleConv().to(device)\n\nsummary(model, [(1, 16, 16), (1, 28, 28)])\n```\n\n\n```\n----------------------------------------------------------------\n        Layer (type)               Output Shape         Param #\n================================================================\n            Conv2d-1            [-1, 1, 16, 16]              10\n              ReLU-2            [-1, 1, 16, 16]               0\n            Conv2d-3            [-1, 1, 28, 28]              10\n              ReLU-4            [-1, 1, 28, 28]               0\n================================================================\nTotal params: 20\nTrainable params: 20\nNon-trainable params: 0\n----------------------------------------------------------------\nInput size (MB): 0.77\nForward\u002Fbackward pass size (MB): 0.02\nParams size (MB): 0.00\nEstimated Total Size (MB): 0.78\n----------------------------------------------------------------\n```\n\n\n\n### References\n\n- The idea for this package sparked from [this PyTorch issue](https:\u002F\u002Fgithub.com\u002Fpytorch\u002Fpytorch\u002Fissues\u002F2001).\n- Thanks to @ncullen93 and @HTLife. \n- For Model Size Estimation @jacobkimmel ([details here](https:\u002F\u002Fgithub.com\u002Fsksq96\u002Fpytorch-summary\u002Fpull\u002F21))\n\n### License\n\n`pytorch-summary` is MIT-licensed.\n\n","## 使用全新且更新的 [torchinfo](https:\u002F\u002Fgithub.com\u002FTylerYep\u002Ftorchinfo)。\n\n## 在 PyTorch 中实现 Keras 风格的 `model.summary()`\n[![PyPI version](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Ftorchsummary.svg)](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Ftorchsummary)\n\nKeras 提供了一个简洁的 API，可以查看模型的可视化结构，在调试网络时非常有用。以下是一个基础代码示例，用于在 PyTorch 中模拟类似的功能。其目标是提供补充信息，弥补 PyTorch 中 `print(your_model)` 所无法提供的内容。\n\n### 使用方法\n\n- `pip install torchsummary` 或\n- `git clone https:\u002F\u002Fgithub.com\u002Fsksq96\u002Fpytorch-summary`\n\n```python\nfrom torchsummary import summary\nsummary(your_model, input_size=(channels, H, W))\n```\n\n- 请注意，`input_size` 是必需的，以便在网络中执行一次前向传播。\n\n### 示例\n\n#### 用于 MNIST 数据集的 CNN\n\n\n```python\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom torchsummary import summary\n\nclass Net(nn.Module):\n    def __init__(self):\n        super(Net, self).__init__()\n        self.conv1 = nn.Conv2d(1, 10, kernel_size=5)\n        self.conv2 = nn.Conv2d(10, 20, kernel_size=5)\n        self.conv2_drop = nn.Dropout2d()\n        self.fc1 = nn.Linear(320, 50)\n        self.fc2 = nn.Linear(50, 10)\n\n    def forward(self, x):\n        x = F.relu(F.max_pool2d(self.conv1(x), 2))\n        x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))\n        x = x.view(-1, 320)\n        x = F.relu(self.fc1(x))\n        x = F.dropout(x, training=self.training)\n        x = self.fc2(x)\n        return F.log_softmax(x, dim=1)\n\ndevice = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\") # PyTorch v0.4.0\nmodel = Net().to(device)\n\nsummary(model, (1, 28, 28))\n```\n\n\n```\n----------------------------------------------------------------\n        Layer (type)               Output Shape         Param #\n================================================================\n            Conv2d-1           [-1, 10, 24, 24]             260\n            Conv2d-2             [-1, 20, 8, 8]           5,020\n         Dropout2d-3             [-1, 20, 8, 8]               0\n            Linear-4                   [-1, 50]          16,050\n            Linear-5                   [-1, 10]             510\n================================================================\nTotal params: 21,840\nTrainable params: 21,840\nNon-trainable params: 0\n----------------------------------------------------------------\nInput size (MB): 0.00\nForward\u002Fbackward pass size (MB): 0.06\nParams size (MB): 0.08\nEstimated Total Size (MB): 0.15\n----------------------------------------------------------------\n```\n\n\n#### VGG16\n\n\n```python\nimport torch\nfrom torchvision import models\nfrom torchsummary import summary\n\ndevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\nvgg = models.vgg16().to(device)\n\nsummary(vgg, (3, 224, 224))\n```\n\n\n```\n----------------------------------------------------------------\n        Layer (type)               Output Shape         Param #\n================================================================\n            Conv2d-1         [-1, 64, 224, 224]           1,792\n              ReLU-2         [-1, 64, 224, 224]               0\n            Conv2d-3         [-1, 64, 224, 224]          36,928\n              ReLU-4         [-1, 64, 224, 224]               0\n         MaxPool2d-5         [-1, 64, 112, 112]               0\n            Conv2d-6        [-1, 128, 112, 112]          73,856\n              ReLU-7        [-1, 128, 112, 112]               0\n            Conv2d-8        [-1, 128, 112, 112]         147,584\n              ReLU-9        [-1, 128, 112, 112]               0\n        MaxPool2d-10          [-1, 128, 56, 56]               0\n           Conv2d-11          [-1, 256, 56, 56]         295,168\n             ReLU-12          [-1, 256, 56, 56]               0\n           Conv2d-13          [-1, 256, 56, 56]         590,080\n             ReLU-14          [-1, 256, 56, 56]               0\n           Conv2d-15          [-1, 256, 56, 56]         590,080\n             ReLU-16          [-1, 256, 56, 56]               0\n        MaxPool2d-17          [-1, 256, 28, 28]               0\n           Conv2d-18          [-1, 512, 28, 28]       1,180,160\n             ReLU-19          [-1, 512, 28, 28]               0\n           Conv2d-20          [-1, 512, 28, 28]       2,359,808\n             ReLU-21          [-1, 512, 28, 28]               0\n           Conv2d-22          [-1, 512, 28, 28]       2,359,808\n             ReLU-23          [-1, 512, 28, 28]               0\n        MaxPool2d-24          [-1, 512, 14, 14]               0\n           Conv2d-25          [-1, 512, 14, 14]       2,359,808\n             ReLU-26          [-1, 512, 14, 14]               0\n           Conv2d-27          [-1, 512, 14, 14]       2,359,808\n             ReLU-28          [-1, 512, 14, 14]               0\n           Conv2d-29          [-1, 512, 14, 14]       2,359,808\n             ReLU-30          [-1, 512, 14, 14]               0\n        MaxPool2d-31            [-1, 512, 7, 7]               0\n           Linear-32                 [-1, 4096]     102,764,544\n             ReLU-33                 [-1, 4096]               0\n          Dropout-34                 [-1, 4096]               0\n           Linear-35                 [-1, 4096]      16,781,312\n             ReLU-36                 [-1, 4096]               0\n          Dropout-37                 [-1, 4096]               0\n           Linear-38                 [-1, 1000]       4,097,000\n================================================================\nTotal params: 138,357,544\nTrainable params: 138,357,544\nNon-trainable params: 0\n----------------------------------------------------------------\nInput size (MB): 0.57\nForward\u002Fbackward pass size (MB): 218.59\nParams size (MB): 527.79\nEstimated Total Size (MB): 746.96\n----------------------------------------------------------------\n```\n\n\n#### 多输入\n\n\n```python\nimport torch\nimport torch.nn as nn\nfrom torchsummary import summary\n\nclass SimpleConv(nn.Module):\n    def __init__(self):\n        super(SimpleConv, self).__init__()\n        self.features = nn.Sequential(\n            nn.Conv2d(1, 1, kernel_size=3, stride=1, padding=1),\n            nn.ReLU(),\n        )\n\n    def forward(self, x, y):\n        x1 = self.features(x)\n        x2 = self.features(y)\n        return x1, x2\n    \ndevice = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\nmodel = SimpleConv().to(device)\n\nsummary(model, [(1, 16, 16), (1, 28, 28)])\n```\n\n\n```\n----------------------------------------------------------------\n        Layer (type)               Output Shape         Param #\n================================================================\n            Conv2d-1            [-1, 1, 16, 16]              10\n              ReLU-2            [-1, 1, 16, 16]               0\n            Conv2d-3            [-1, 1, 28, 28]              10\n              ReLU-4            [-1, 1, 28, 28]               0\n================================================================\nTotal params: 20\nTrainable params: 20\nNon-trainable params: 0\n----------------------------------------------------------------\nInput size (MB): 0.77\nForward\u002Fbackward pass size (MB): 0.02\nParams size (MB): 0.00\nEstimated Total Size (MB): 0.78\n----------------------------------------------------------------\n```\n\n\n\n### 参考文献\n\n- 本包的灵感来源于 [PyTorch 的这个 issue](https:\u002F\u002Fgithub.com\u002Fpytorch\u002Fpytorch\u002Fissues\u002F2001)。\n- 感谢 @ncullen93 和 @HTLife。\n- 模型大小估算部分由 @jacobkimmel 贡献（[详情见此处](https:\u002F\u002Fgithub.com\u002Fsksq96\u002Fpytorch-summary\u002Fpull\u002F21)）。\n\n### 许可证\n\n`pytorch-summary` 采用 MIT 许可证。","# pytorch-summary 快速上手指南\n\n`pytorch-summary` 是一个为 PyTorch 设计的轻量级工具，旨在提供类似 Keras `model.summary()` 的功能。它能清晰地展示模型的层级结构、输出形状、参数量以及内存占用估算，是调试和评估神经网络结构的得力助手。\n\n> **注意**：原作者推荐新项目 [torchinfo](https:\u002F\u002Fgithub.com\u002FTylerYep\u002Ftorchinfo)，但 `pytorch-summary` 依然稳定可用且简洁。\n\n## 环境准备\n\n- **系统要求**：支持 Linux、macOS 或 Windows。\n- **前置依赖**：\n  - Python 3.6+\n  - PyTorch (建议版本 >= 0.4.0)\n  - 可选：CUDA（如需在 GPU 上运行模型分析）\n\n## 安装步骤\n\n你可以通过 PyPI 直接安装，或从 GitHub 克隆源码。国内开发者推荐使用清华源加速安装。\n\n**方式一：使用 pip 安装（推荐）**\n\n```bash\npip install torchsummary -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n**方式二：从 GitHub 克隆**\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fsksq96\u002Fpytorch-summary\ncd pytorch-summary\npip install .\n```\n\n## 基本使用\n\n使用该工具的核心只需两步：导入 `summary` 函数，并传入模型实例与输入尺寸元组。\n\n**核心代码示例：**\n\n```python\nfrom torchsummary import summary\nsummary(your_model, input_size=(channels, H, W))\n```\n\n> **关键点**：`input_size` 参数是必须的，工具需要利用它执行一次前向传播以推导各层输出形状。\n\n**完整示例（MNIST CNN 模型）：**\n\n```python\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom torchsummary import summary\n\nclass Net(nn.Module):\n    def __init__(self):\n        super(Net, self).__init__()\n        self.conv1 = nn.Conv2d(1, 10, kernel_size=5)\n        self.conv2 = nn.Conv2d(10, 20, kernel_size=5)\n        self.fc1 = nn.Linear(320, 50)\n        self.fc2 = nn.Linear(50, 10)\n\n    def forward(self, x):\n        x = F.relu(F.max_pool2d(self.conv1(x), 2))\n        x = F.relu(F.max_pool2d(self.conv2(x), 2))\n        x = x.view(-1, 320)\n        x = F.relu(self.fc1(x))\n        x = self.fc2(x)\n        return F.log_softmax(x, dim=1)\n\n# 自动检测设备\ndevice = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\nmodel = Net().to(device)\n\n# 生成摘要：输入为单通道 28x28 图像\nsummary(model, (1, 28, 28))\n```\n\n**输出效果预览：**\n\n```text\n----------------------------------------------------------------\n        Layer (type)               Output Shape         Param #\n================================================================\n            Conv2d-1           [-1, 10, 24, 24]             260\n            Conv2d-2             [-1, 20, 8, 8]           5,020\n            Linear-3                   [-1, 50]          16,050\n            Linear-4                   [-1, 10]             510\n================================================================\nTotal params: 21,840\nTrainable params: 21,840\nNon-trainable params: 0\n----------------------------------------------------------------\nInput size (MB): 0.00\nForward\u002Fbackward pass size (MB): 0.06\nParams size (MB): 0.08\nEstimated Total Size (MB): 0.15\n----------------------------------------------------------------\n```\n\n该输出包含了每一层的类型、输出张量形状、参数量，以及模型整体的内存占用估算，帮助你快速把握模型规模。","某计算机视觉算法工程师正在调试一个自定义的多分支卷积神经网络，试图在有限的显存资源下优化模型结构以适配边缘设备。\n\n### 没有 pytorch-summary 时\n- 仅靠 `print(model)` 只能看到层级定义，无法直观得知每一层经过前向传播后的具体输出维度（Output Shape），排查维度不匹配报错极其耗时。\n- 难以快速统计各层参数量分布，无法判断是卷积层还是全连接层占用了大部分内存，导致模型剪枝和轻量化无从下手。\n- 缺乏对中间激活值占用显存的估算，经常在代码运行到一半时因显存溢出（OOM）而中断，不得不反复试错调整输入尺寸或批量大小。\n- 在复现论文模型或修改开源代码时，需要手动推算复杂的维度变化，极易出错且效率低下。\n\n### 使用 pytorch-summary 后\n- 运行一行 `summary(model, input_size)` 即可生成类似 Keras 的详细表格，清晰展示每一层的类型、输出形状及参数数量，瞬间定位维度断裂点。\n- 报表自动汇总总参数量、可训练参数占比以及估算的显存占用（Forward\u002FBackward pass size），为模型压缩提供精确的数据支撑。\n- 提前预知模型在不同输入分辨率下的显存需求，能在编码阶段就规避 OOM 风险，大幅减少调试时的无效等待时间。\n- 将原本需要数小时的手动推演和试错过程缩短至几分钟，让开发者能更专注于网络结构的设计与创新。\n\npytorch-summary 通过提供可视化的模型“体检报告”，将黑盒般的网络结构透明化，显著提升了 PyTorch 模型的开发效率与调试精度。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsksq96_pytorch-summary_6a9b63b6.png","sksq96","Shubham Chandel","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fsksq96_eb795090.jpg","Applied Scientist at @Microsoft working on natural language and code. Previously NYU, @IBM research, @amzn.","https:\u002F\u002Ftryhue.app\u002F",null,"shubhamchandel@nyu.edu","https:\u002F\u002Fgithub.com\u002Fsksq96",[24],{"name":25,"color":26,"percentage":27},"Python","#3572A5",100,4059,409,"2026-04-18T15:28:55","MIT",1,"未说明","非必需。支持 CPU 和 CUDA GPU（代码示例显示自动检测：'cuda' if torch.cuda.is_available() else 'cpu'），具体型号和显存取决于运行的模型大小。","未说明（取决于模型大小，例如运行 VGG16 示例时峰值内存占用约 750MB+）",{"notes":37,"python":33,"dependencies":38},"该工具已不再积极维护，README 强烈建议使用更新版的替代工具 'torchinfo'。使用时必须提供 input_size 参数以执行前向传播来计算网络结构。安装命令为 'pip install torchsummary'。",[39,40],"torch","torchvision",[42],"开发框架",[44,45,46,47],"pytorch","keras","summary","deep-learning",2,"ready","2026-03-27T02:49:30.150509","2026-04-19T09:15:02.580670",[53,58,63,68,73,78],{"id":54,"question_zh":55,"answer_zh":56,"source_url":57},42065,"如何处理多输入网络（Multi-input）导致的尺寸不匹配或报错问题？","确保已升级到最新版本：`pip install --upgrade torch-summary`。调用 summary 函数时，将输入尺寸作为列表传入，例如：`summary(net, [(1, 88, 88), (1, 88, 88)])`。如果升级后输入尺寸统计仍显示不正确，可能是旧版本缓存问题，请确认环境中安装的是最新版。","https:\u002F\u002Fgithub.com\u002Fsksq96\u002Fpytorch-summary\u002Fissues\u002F113",{"id":59,"question_zh":60,"answer_zh":61,"source_url":62},42066,"当模型有多个不同数据类型（dtype）的输入时，torchsummary 报错或生成错误类型的随机输入怎么办？","早期版本不支持为每个输入指定不同的 dtype。解决方案是传入包含尺寸和数据类型的元组列表。用法示例：`summary(model, [((size1), dtype1), ((size2), dtype2)])`。维护者已在后续分支中修复此问题，允许传递不同的 dtype，建议更新库或参考相关 PR（#104）的代码修改。","https:\u002F\u002Fgithub.com\u002Fsksq96\u002Fpytorch-summary\u002Fissues\u002F102",{"id":64,"question_zh":65,"answer_zh":66,"source_url":67},42067,"传入 `device` 参数时报错 `AttributeError: 'torch.device' object has no attribute 'lower'` 如何解决？","这是因为代码期望 `device` 是字符串类型，而用户传入了 `torch.device` 对象。解决方法是将 `torch.device` 对象转换为其类型字符串。例如，将 `device=device` 修改为 `device=device.type`。调用示例：`summary(model, (3, 224, 224), device=device.type)`。","https:\u002F\u002Fgithub.com\u002Fsksq96\u002Fpytorch-summary\u002Fissues\u002F61",{"id":69,"question_zh":70,"answer_zh":71,"source_url":72},42068,"在 Python 2.7 环境下导入或使用 torchsummary 时出现 `SyntaxError: invalid syntax` 错误怎么办？","这是由于函数定义中的关键字参数顺序在 Python 2 中不合法。需要修改 `torchsummary.py` 源码，将 `*input_size` 移到关键字参数之前。修改后的函数签名为：`def summary(model, batch_size=-1, device='cuda', *input_size):`。调用时需按顺序传参，例如单输入：`summary(net, -1, 'cuda', (3, 225, 225))`；多输入：`summary(net, -1, 'cuda', (3, 225, 225), (3, 225, 225))`。建议直接使用 Python 3 以避免此类兼容性问题。","https:\u002F\u002Fgithub.com\u002Fsksq96\u002Fpytorch-summary\u002Fissues\u002F29",{"id":74,"question_zh":75,"answer_zh":76,"source_url":77},42069,"运行 DenseNet 或 MobileNet 等预训练模型时报错 `AttributeError: 'NoneType' object has no attribute 'size'` 是什么原因？","该错误通常发生在模型中的某些层（如 BatchNorm）没有 bias 属性（即为 None），而 torchsummary 尝试计算其参数量时未做空值检查。这通常是旧版本 torchsummary 的 Bug。如果遇到此问题，请尝试升级库到最新版本。如果问题依旧，可能需要手动修改源码，在计算参数量前增加判断：`if module.bias is not None:` 再进行计算。","https:\u002F\u002Fgithub.com\u002Fsksq96\u002Fpytorch-summary\u002Fissues\u002F2",{"id":79,"question_zh":80,"answer_zh":81,"source_url":67},42070,"如何正确指定设备（GPU\u002FCPU）以避免类型错误？","在调用 summary 函数时，`device` 参数应传入字符串（如 \"cuda\" 或 \"cpu\"）。如果你使用的是 `torch.device('cuda')` 对象，请务必使用 `.type` 属性将其转换为字符串，即 `device=torch.device('cuda').type` 或直接传字符串 `device='cuda'`，否则内部调用 `.lower()` 方法时会报错。",[],[84,96,104,113,121,130],{"id":85,"name":86,"github_repo":87,"description_zh":88,"stars":89,"difficulty_score":90,"last_commit_at":91,"category_tags":92,"status":49},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[93,42,94,95],"Agent","图像","数据工具",{"id":97,"name":98,"github_repo":99,"description_zh":100,"stars":101,"difficulty_score":90,"last_commit_at":102,"category_tags":103,"status":49},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[42,94,93],{"id":105,"name":106,"github_repo":107,"description_zh":108,"stars":109,"difficulty_score":48,"last_commit_at":110,"category_tags":111,"status":49},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",160411,"2026-04-18T23:33:24",[42,93,112],"语言模型",{"id":114,"name":115,"github_repo":116,"description_zh":117,"stars":118,"difficulty_score":48,"last_commit_at":119,"category_tags":120,"status":49},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[42,94,93],{"id":122,"name":123,"github_repo":124,"description_zh":125,"stars":126,"difficulty_score":48,"last_commit_at":127,"category_tags":128,"status":49},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[129,93,94,42],"插件",{"id":131,"name":132,"github_repo":133,"description_zh":134,"stars":135,"difficulty_score":48,"last_commit_at":136,"category_tags":137,"status":49},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[129,42]]