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(_)
相关推荐
深小乐2 小时前
我在 Anthropic ELI5 上加了5样东西,做成了更好用的 ELI5+
人工智能
东风破_3 小时前
《LangGraph Memory:为什么 Agent 需要 Checkpointer?》
人工智能
锋行天下3 小时前
LangGraph 同级节点之间修改数据先后问题
人工智能
2601_962078193 小时前
Python中calendar.weekday用法
python·编程技巧·calendar·日期处理·weekday
u1301303 小时前
AI 日报(2026年9月12日)
人工智能
东风破_3 小时前
《LangGraph Human-in-the-loop:Interrupt 如何让 Agent 等待人工确认》
人工智能
2601_962218613 小时前
万象生鲜系统业财一体化底层打通技术自动生成经营账单
大数据·数据库·人工智能·python·算法
2601_966949653 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
智塑未来3 小时前
中文短剧出海翻译工具横评:VMEG AI、鬼手、Vozo AI、ElevenLabs怎么选?
人工智能
东风破_3 小时前
《LangGraph 条件路由与循环:如何让 Agent 自己决定下一步?》
人工智能