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(_)
相关推荐
fthux3 分钟前
用了 GitZip 这么多年,我动手做了一个「Pro」版
人工智能·开源·github
Zik----4 分钟前
DAEFR (ICLR 2024)— 盲脸超分模型解读
人工智能·python·高光谱图像·光谱恢复
TheRouter8 分钟前
Agent Harness系列(三):记忆层的3种持久化架构——从SQLite到向量库
人工智能·架构·sqlite·llm·ai-native
一切皆是因缘际会15 分钟前
从概率生成到内生心智:2026大模型瓶颈与下一代AI演进方向
人工智能·安全·ai·架构
头发够用的程序员18 分钟前
C++和Python面试经典算法汇总(一)
开发语言·c++·python·算法·容器·面试
X54先生(人文科技)19 分钟前
《元创力》纪实录·心田记釉下新声:当《纪·念》成为可聆听的星轨
人工智能·开源·ai写作·开源协议
CeshirenTester21 分钟前
字节面试官追问:“你的Agent调了三个工具就死循环了,异常处理在哪写的?”我:啊?还要写这个?
人工智能
小程故事多_8025 分钟前
[大模型面试系列] RAG系统检索失效全链路排查指南,从根源定位到落地优化方法
人工智能·智能体
圣殿骑士-Khtangc27 分钟前
AI Agent Skills 数量爆炸治理方案:从混沌到有序的系统性实践
人工智能
夜猫逐梦30 分钟前
【逆向经验】一篇文章讲透为什么CE搜不到Python游戏的内存值
开发语言·python·游戏