您的位置:首页 > 其它

PaddlePaddle第一周学习心得

2020-08-16 11:03 176 查看

PaddlePaddle第一周学习心得

PaddlePaddle课程心得体会

学习的这项免费课程来自毕然老师的《百度架构师手把手带你零基础实践深度学习》,是一个21天的理论+实践课程。非常感谢得到这样一个学习机会~
本人基础:数学基础知识薄弱,R语言熟练掌握,学习过深度神经网络的基础知识,跑过R语言中H2O、deepnet包的demo并进行过小的实验
在本次课程中的诉求:快速掌握Python语法并进行一定的深度学习实践
第一周的心得体会:总体来讲作为一门免费课程,课程的含金量非常高(对于我这种python+数学小白),每一节课的内容都非常充实。
第一周的内容主要学习了两个章节:
第一章节是深度学习的零基础入门,讲解了一些概念,从生动有趣的理论讲解再到细节的代码实践(真的是非常扎实地用python语句完成了所有的实践,学习代码的过程中也让我对python语法有了一些理解),再到使用飞桨平台的代码对比,发现飞桨平台真的非常友好,它有固定的语句编写程式,能让你更加专注于任务本身而不是纠结在代码实现。
第二章则是用mnist手写字体识别数据库进行了基于飞桨平台的深度学习完整实现。
在学习的过程中虽然遇到非常多的困难和问题,但不断查阅资料为自己解答困惑的过程也非常有意思(虽然还是有很多坑没啃掉orz)希望第二周再接再厉!

PaddlePaddle学习框架

图片摘自https://blog.csdn.net/weixin_44095278/article/details/107927546。
该教程使用的是“横纵式”教学法。在“横纵式”教学法中,纵向概要介绍模型的基本代码结构和极简实现方案。横向深入探讨构建模型的每个环节中,更优但相对复杂的实现方案。例如在模型设计环节,除了在极简版本使用的单层神经网络(与房价预测模型一样)外,还可以尝试更复杂的网络结构,如多层神经网络、加入非线性的激活函数,甚至专门针对视觉任务优化的卷积神经网络。

一些课程作业的代码

PS:(没有跑通(卑微))

# 加载飞桨和相关数据处理的库
import paddle
import paddle.fluid as fluid
from paddle.fluid.dygraph.nn import Linear
import numpy as np
import os
import gzip
import json
import random

def load_data(mode='train'):
# 读取cifar数据
trainset = paddle.dataset.cifar.train10(cycle=False)
train_reader = paddle.batch(trainset, batch_size=8)
print('cifar dataset load done')

testset = paddle.dataset.cifar.test10(cycle=False)
test_reader = paddle.batch(testset, batch_size=8)

imgs, labels = trainset[0], trainset[1]
# 数据集相关参数,图片高度IMG_ROWS, 图片宽度IMG_COLS
IMG_ROWS = 32
IMG_COLS = 32
# 校验数据
imgs_length = len(imgs)

assert len(imgs) == len(labels), \
"length of train_imgs({}) should be the same as train_labels({})".format(len(imgs), len(label))

# 获得数据集长度
imgs_length = len(imgs)

# 定义数据集每个数据的序号,根据序号读取数据
index_list = list(range(imgs_length))
# 读入数据时用到的批次大小
BATCHSIZE = 100

# 定义数据生成器
def data_generator():
if mode == 'train':
# 训练模式下打乱数据
random.shuffle(index_list)
imgs_list = []
labels_list = []
for i in index_list:
# 将数据处理成希望的格式,比如类型为float32,shape为[1, 28, 28]
img = np.reshape(imgs[i], [1, IMG_ROWS, IMG_COLS]).astype('float32')
label = np.reshape(labels[i], [1]).astype('float32')
imgs_list.append(img)
labels_list.append(label)
if len(imgs_list) == BATCHSIZE:
# 获得一个batchsize的数据,并返回
yield np.array(imgs_list), np.array(labels_list)
# 清空数据读取列表
imgs_list = []
labels_list = []

# 如果剩余数据的数目小于BATCHSIZE,
# 则剩余数据一起构成一个大小为len(imgs_list)的mini-batch
if len(imgs_list) > 0:
yield np.array(imgs_list), np.array(labels_list)
return data_generator

# 声明数据读取函数,从训练集中读取数据
train_loader = data_generator
# 以迭代的形式读取数据
for batch_id, data in enumerate(train_loader()):
image_data, label_data = data
if batch_id == 0:
# 打印数据shape和类型
print("打印第一个batch数据的维度:")
print("图像维度: {}, 标签维度: {}".format(image_data.shape, label_data.shape))
break
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: