zoukankan      html  css  js  c++  java
  • 【深度学习】paddlepaddle基础语法

     1 # 1、导入包
     2 import paddle.fluid as fluid
     3 import paddle
     4 
     5 # 2、数据预处理
     6 # 调整图片大小等---跟框架本身没有关系
     7 
     8 # 3、构造reader---本质:读取数据
     9 # (1)reader---获取一个样本数据
    10 # 返回ndarray类型 或者元组
    11 # def reader():
    12 #     while True:
    13 #         yield numpy.random.uniform(-1,1,size=width*height)  # 理解为返回的数据只有特征值
    14 #         yield numpy.random.uniform(-1,1,size=width*height),label # 返回一个样本,样本具有特征值与目标值
    15 # (2) batch reader ----返回多个样本
    16 # def reader():
    17 #      while True:
    18 #          yield [(特征,目标),(特征,目标),(特征,目标),(特征,目标)]---特征值为ndarray类型,样本是具有特征值与目标值
    19 #          yield [(特征,),(特征,),(特征,),(特征,)]---特征值为ndarray类型,样本只含有特征值
    20 # (3)reader creator ----返回一个reader函数
    21 # (4)reader decorator:----返回将多个reader函数合并成一个reader函数
    22 
    23 # 4、训练场所
    24 # 指定CPU运行
    25 place = fluid.CPUPlace()
    26 # 指定GPU运行
    27 # place= fluid.CUDAPlace(0)
    28 
    29 # 5、配置网络结构
    30 # 数据层
    31 # 特征数据层
    32 # name 数据层名称
    33 # shape  数据形状
    34 # dtype 数据类型
    35 # append_batch_size= True,传递的数据是一个批次样本
    36 # append_batch_size= False,传递的数据是一个样本
    37 x = fluid.layers.data(name="x", shape=[1, 28, 28], append_batch_size=True, dtype='float32')
    38 # print(x.shape)
    39 # 目标数据层
    40 y = fluid.layers.data(name="y", shape=[1], append_batch_size=True, dtype="int64")
    41 # print(y.shape)
    42 # 网络层
    43 # 以fc为演示
    44 # input 输入
    45 # size 该层的神经元个数
    46 # act 激活函数
    47 h1 = fluid.layers.fc(input=x, size=128, act="relu", name="h1")
    48 h2 = fluid.layers.fc(input=h1, size=64, act="relu", name="h2")
    49 # 结束--多分类
    50 # 3分类
    51 # 多分类的最后一层 吐出预测值
    52 y_pedict = fluid.layers.fc(input=h2, size=3, act="softmax", name="out_put")
    53 
    54 # 损失 --交叉熵损失
    55 # input 预测值
    56 # label 真实值
    57 # 总损失
    58 loss = fluid.layers.cross_entropy(input=y_pedict, label=y)
    59 # print(loss)
    60 # 计算平均损失
    61 avg_loss = fluid.layers.mean(loss)
    62 
    63 # 计算准确率----这一批次的准确率
    64 acc = fluid.layers.accuracy(input=y_pedict, label=y)
    65 
    66 # 优化损失---sgd
    67 # (1)构建sgd优化算法
    68 sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.1)
    69 # (2)指定优化损失
    70 sgd_optimizer.minimize(avg_loss)
    71 
    72 # 6、指定数据层与网络的联系
    73 feeder = fluid.DataFeeder(feed_list=[x, y], place=place)
    74 
    75 # 7、构建执行器
    76 exe = fluid.Executor(place=place)
    77 
    78 # 8、初始化训练参数
    79 # 显示的初始化网络参数
    80 exe.run(fluid.default_startup_program())
    81 
    82 # 9、开启训练
    83 # 双层循环--去训练数据
    84 # 外层---训练的轮数
    85 # 内层---加载数据进行训练
  • 相关阅读:
    spring boot集成redis和mongodb实现计步排名
    spring boot + redis 实现网站限流和接口防刷功能
    基于spring-boot-data-jdbc的RowMapper实例的初始化配置,配置内容和实体类的代码由测试类生成
    自定义注解并封装成jar包,实现一般方法和Controller类的入参、出参和执行时间的日志打印
    封装自己的spring-boot-starter实现初始化字典数据和脱敏(windows10+jdk8+idea+spring-boot2.1.5)
    spring boot 集成mybatis的多数据源
    常用工具说明--jsdoc 前端文档输出工具
    常用工具说明--mysql数据库安装
    web前端--实现前后端分离的心得
    资料汇总--Ajax中Put和Delete请求传递参数无效的解决方法(Restful风格)【转】
  • 原文地址:https://www.cnblogs.com/Tree0108/p/12116310.html
Copyright © 2011-2022 走看看