有什么办法,我可以像在Keras中的model.summary()
方法那样在PyTorch中打印模型的摘要,如下所示?
Model Summary:
____________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
====================================================================================================
input_1 (InputLayer) (None, 1, 15, 27) 0
____________________________________________________________________________________________________
convolution2d_1 (Convolution2D) (None, 8, 15, 27) 872 input_1[0][0]
____________________________________________________________________________________________________
maxpooling2d_1 (MaxPooling2D) (None, 8, 7, 27) 0 convolution2d_1[0][0]
____________________________________________________________________________________________________
flatten_1 (Flatten) (None, 1512) 0 maxpooling2d_1[0][0]
____________________________________________________________________________________________________
dense_1 (Dense) (None, 1) 1513 flatten_1[0][0]
====================================================================================================
Total params: 2,385
Trainable params: 2,385
Non-trainable params: 0
虽然您不会像Keras的模型那样获得有关模型的详细信息。总之,仅打印模型将使您对所涉及的不同层及其规格有所了解。
例如:
from torchvision import models
model = models.vgg16()
print(model)
在这种情况下,输出将如下所示:
VGG (
(features): Sequential (
(0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): ReLU (inplace)
(2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): ReLU (inplace)
(4): MaxPool2d (size=(2, 2), stride=(2, 2), dilation=(1, 1))
(5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(6): ReLU (inplace)
(7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(8): ReLU (inplace)
(9): MaxPool2d (size=(2, 2), stride=(2, 2), dilation=(1, 1))
(10): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(11): ReLU (inplace)
(12): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(13): ReLU (inplace)
(14): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(15): ReLU (inplace)
(16): MaxPool2d (size=(2, 2), stride=(2, 2), dilation=(1, 1))
(17): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(18): ReLU (inplace)
(19): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(20): ReLU (inplace)
(21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(22): ReLU (inplace)
(23): MaxPool2d (size=(2, 2), stride=(2, 2), dilation=(1, 1))
(24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(25): ReLU (inplace)
(26): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(27): ReLU (inplace)
(28): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(29): ReLU (inplace)
(30): MaxPool2d (size=(2, 2), stride=(2, 2), dilation=(1, 1))
)
(classifier): Sequential (
(0): Dropout (p = 0.5)
(1): Linear (25088 -> 4096)
(2): ReLU (inplace)
(3): Dropout (p = 0.5)
(4): Linear (4096 -> 4096)
(5): ReLU (inplace)
(6): Linear (4096 -> 1000)
)
)
正如Kashy所提到的,现在您可以使用该state_dict
方法来获取不同图层的权重。但是,使用此层列表可能会提供更多指导,即创建一个辅助函数来获得类似模型摘要的Keras!希望这可以帮助!
如何像方法在Keras中的作用:
译者:talengu PyTorch的主要接口为Python。虽然Python有动态编程和易于迭代的优势,但在很多情况下,正是Python的这些属性会带来不利。我们经常遇到的生产环境,要满足低延迟和严格部署要求。对于生产场景而言,C 通常是首选语言,也能很方便的将其绑定到另一种语言,如Java,Rust或Go。本教程将介绍从将PyTorch训练的模型序列化表示,到C语言_加载_和_执行_的过程。
我开发了一个机器学习模型,并将其与Flask应用程序集成。当我尝试为应用程序运行 docker 映像时,它显示我没有 GPU 访问权限。我应该如何编写一个 Docker 文件,以便我可以在容器内使用“cuda GPU”?下面是泊坞文件的当前状态。 来自蟒蛇:3.9 工作目录/myapp 补充。/myapp 运行pip3 install -r requirements.txt 复制… CMD["py
本文向大家介绍pytorch构建多模型实例,包括了pytorch构建多模型实例的使用技巧和注意事项,需要的朋友参考一下 pytorch构建双模型 第一部分:构建"se_resnet152","DPN92()"双模型 第二部分构建densenet201单模型 以上这篇pytorch构建多模型实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
本文向大家介绍基于Pytorch SSD模型分析,包括了基于Pytorch SSD模型分析的使用技巧和注意事项,需要的朋友参考一下 本文参考github上SSD实现,对模型进行分析,主要分析模型组成及输入输出大小.SSD网络结构如下图: 每输入的图像有8732个框输出; VGG基础网络结构: 输出为: SSD中添加的网络 add_extras函数构建基本的卷积层 输出为: multibox函数得到
本文向大家介绍解决pytorch 模型复制的一些问题,包括了解决pytorch 模型复制的一些问题的使用技巧和注意事项,需要的朋友参考一下 直接使用 会出现当更新model2时,model1的权重也会更新,这和自己的初始目的不同。 经评论指出可以使用: 来实现深拷贝,手上没有pytorch环境,具体还没测试过,谁测试过可以和我说下有没有用。 原方法: 所有要使用模型复制可以使用如下方法。 这样编写