paddle模型定义

python 复制代码
import paddle
import paddle.nn as nn
# #方法1、内置的模型
# print('飞桨框架内置模型:', paddle.vision.models.__all__)
# # 模型组网并初始化网络
# lenet = paddle.vision.models.LeNet(num_classes=10)
# print(type(lenet))
# # 可视化模型组网结构和参数
# paddle.summary(lenet,(1, 1, 28, 28))


##方法2、paddle.nn.Sequential
# from paddle import nn
# # 使用 paddle.nn.Sequential 构建 LeNet 模型
# lenet_Sequential = nn.Sequential(
#     nn.Conv2D(1, 6, 3, stride=1, padding=1),
#     nn.ReLU(),
#     nn.MaxPool2D(2, 2),
#     nn.Conv2D(6, 16, 5, stride=1, padding=0),
#     nn.ReLU(),
#     nn.MaxPool2D(2, 2),
#     nn.Flatten(),
#     nn.Linear(400, 120),
#     nn.Linear(120, 84),
#     nn.Linear(84, 10)
# )
# print(type(lenet_Sequential))
# # 可视化模型组网结构和参数
# paddle.summary(lenet_Sequential,(1, 1, 28, 28))

##方法3
# 使用 Subclass 方式构建 LeNet 模型
class LeNet(nn.Layer):
    def __init__(self, num_classes=10):
        super().__init__()
        self.num_classes = num_classes
        # 构建 features 子网,用于对输入图像进行特征提取
        self.features = nn.Sequential(
            nn.Conv2D(
                1, 6, 3, stride=1, padding=1),
            nn.ReLU(),
            nn.MaxPool2D(2, 2),
            nn.Conv2D(
                6, 16, 5, stride=1, padding=0),
            nn.ReLU(),
            nn.MaxPool2D(2, 2))
        # 构建 linear 子网,用于分类
        if num_classes > 0:
            self.linear = nn.Sequential(
                nn.Linear(400, 120),
                nn.Linear(120, 84),
                nn.Linear(84, num_classes)
            )
    # 执行前向计算
    def forward(self, inputs):
        x = self.features(inputs)

        if self.num_classes > 0:
            x = paddle.flatten(x, 1)
            x = self.linear(x)
        return x
lenet_SubClass = LeNet()
print(type(lenet_SubClass))
# 可视化模型组网结构和参数
params_info = paddle.summary(lenet_SubClass,(1, 1, 28, 28))
print(params_info)

#打印模型参数
for name,param in lenet_SubClass.named_parameters():
    print(f"Layer: {name} | Size: {param.shape}")
python 复制代码
import paddle

x=paddle.uniform((2,3,8,8),dtype='float32')
print(x.shape)
conv=paddle.nn.Conv2D(3,6,(3,3),2,1)
y=conv(x)
print('卷积之后的结果',y.shape)
pool=paddle.nn.MaxPool2D(3,2,padding=1)
y=pool(x)
print('池化后的结果',y.shape)
linear=paddle.nn.Linear(6,4)
x=paddle.rand((2,6),dtype='float32')
print(x.shape)
y=linear(x)
print('线性层之后的结果',y.shape)
# for _ in dir(paddle.nn):
#     print(_)
相关推荐
360安全应急响应中心17 分钟前
Python代码保护之重置操作码映射的攻与防探究(一)
python·逆向
算家计算36 分钟前
一句话生成爆款视频!GPT-5赋能Agent,视频创作进入智能体时代
人工智能·aigc·agent
算家计算38 分钟前
使用指南 | Coze Studio 一站式AI智能体开发平台:低代码+多模型+RAG,快速打造你的专业级 AI Agent!
人工智能·agent·coze
码界奇点39 分钟前
Python内置函数全解析:30个核心函数语法、案例与最佳实践指南
linux·服务器·python
dreams_dream1 小时前
django错误记录
后端·python·django
hixiong1231 小时前
C# 编写一个XmlToDota的转换工具
开发语言·人工智能·yolo·c#
MC皮蛋侠客1 小时前
使用Python实现DLT645-2007智能电表协议
python·网络协议·tcp/ip·能源
中等生2 小时前
Python 的循环引入问题
python
ManageEngineITSM2 小时前
云原生环境下的ITSM新趋势:从传统运维到智能化服务管理
大数据·运维·人工智能·云原生·itsm·工单系统
aneasystone本尊2 小时前
可视化探索 GraphRAG 的知识图谱
人工智能