paddle百度飞桨,一个简单神经网络,完成模型搭建的全流程

本文介绍了一个使用 PaddlePaddle 框架实现的神经网络模型,该模型通过定义特定的网络结构进行分类任务。文章详细展示了模型的训练过程,包括损失函数的选择、优化器设置及训练迭代流程,并提供了模型保存与加载的方法,最后实现了模型的预测功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# -*- coding: UTF-8 -*-
"""
@项目名称:Delete.py
@作   者:陆地起飞全靠浪
@创建日期:2022-07-20-09:04
"""
from paddle import nn

class NN(nn.Layer):
    def __init__(self, nc=4):
        super(NN, self).__init__()
        self.fceq = nn.Linear(1000, 1000)
        self.fc = nn.Linear(1000, nc)
        self.act = nn.LeakyReLU()
        self.soft = nn.Softmax()

    def forward(self, x):
        x = self.fceq(x)
        x = self.act(x)
        x = self.fceq(x)
        x = self.act(x)

        x = self.fc(x)
        x = self.soft(x)
        return x


import os
import numpy as np
from glob import glob
from paddle.io import Dataset

class GetData(Dataset):
    def __init__(self, data_dir):
        super(GetData, self).__init__()
        self.data_list = glob(os.path.join(data_dir, '/*'))

    def __getitem__(self, item):
        data_path = self.data_list[item]
        x = np.load(data_path)
        label = int(os.path.basename().split("_")[0])  # label_time.time()
        return x, np.array([label])


import paddle
from paddle.io import DataLoader

def train(isNew=True):
    loss = paddle.nn.loss.CrossEntropyLoss(soft_label=True)
    if isNew:
        model = NN(10)
        opt = paddle.optimizer.Adam(learning_rate=0.01, parameters=model.parameters())
    else:
        # 继续训练
        model = paddle.load("model.pdmodel")

        layer_state_dict = paddle.load("model.pdparams")
        model.set_state_dict(layer_state_dict)

        opt = paddle.optimizer.Adam(learning_rate=0.01, parameters=model.parameters())
        opt_state_dict = paddle.load("model.pdopt")
        opt.set_state_dict(opt_state_dict)
    model.train()
    get_data = GetData("./")
    data_loader = DataLoader(get_data, batch_size=3, shuffle=True)
    for _ in range(300):
        for x, y in data_loader:
            out = model(x)
            t_loss = loss(out, y)
            t_loss.backward()
            opt.step()
            opt.clear_grad()
            if t_loss < 10:
                paddle.save(model, "model.pdmodel")
                paddle.save(model.state_dict, "model.pdparams")
                paddle.save(opt.state_dict(), 'model.pdopt')

def predict(x):
    model = NN(10)
    model.eval()
    layer_state_dict = paddle.load("model.pdparams")
    model.set_state_dict(layer_state_dict)
    y = model(x)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脚踏南山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值