李宏毅机器学习作业三

前言

项目三是训练一个简单的卷积神经网络,实现食物图片的分类。现在还没有完成,在这里做一个记录。第三个作业比前面两个难了不少,遇到了很多困难,首先还是去理解老师已经给出的代码。这里用了paddlepaddle的深度学习框架,代码里碰到很多不懂的api就去paddlepaddle官网找文档然后加了注释。现在代码已经理解了但是运行还有一些错误。

 

 数据集分别为training、validation 以及 testing
training 以及 validation 中的照片名称格式为 [类别]_[编号].jpg,例如 3_100.jpg 即为类别 3 的照片(编号不重要)

四个步骤:

1.定义数据集

2.模型结构

3.模型训练

4.测试

一、定义数据集

在 paddle 中,我们可以利用 paddle.io 的 Dataset 及 DataLoader 来"包装"数据,使后续的训练及预测更为方便。 Dataset 需要 overload 两个函数:len 及 getitem len 必须要回传 dataset 的大小,而 getitem 则定义了当函数利用 [idx] 取值时,数据集应该要怎么回传数据。 实际上我们并不会直接使用到这两个函数,但是使用 DataLoader 在 enumerate Dataset 时会使用到,没有做的话会在运行阶段出现错误。

# Import需要的套件
import os
import cv2
import time
import numpy as np
import paddle
from paddle.io import Dataset, DataLoader
from paddle.nn import Sequential, Conv2D, BatchNorm2D, ReLU, MaxPool2D, Linear, Flatten
from paddle.vision.transforms import Compose, Transpose, RandomRotation, RandomHorizontalFlip, Normalize, Resize
# 分配CPU设备
place = paddle.CPUPlace()
paddle.disable_static(place)
print(paddle.__version__)

# 在框架下不用open一个文件然后去读,而是聚成一个dataset基类,再定义一个业务类FoodDataset,然后在initial方法里面传入必要的一些组件
class FoodDataset(Dataset):
    def __init__(self, image_path, image_size=(128, 128), mode='train'):
        self.image_path = image_path            #传递路径
        self.image_file_list = sorted(os.listdir(image_path)) #os.listdir(path)返回指定的文件夹包含的文件或文件夹的名字的列表。
        self.mode = mode
        # training 时做 data augmentation
        self.train_transforms = Compose([      #数据增强组件
            Resize(size=image_size),           #缩放
            RandomHorizontalFlip(),            #依据概率p对图片进行水平翻转,p默认0.5
            RandomRotation(15),                #中心旋转随机(-15,15)度
            
### 回答1: 李宏毅是一位著名的机器学习专家,他在GAN(生成对抗网络)方面做出了重要贡献。GAN是一种包含两个神经网络的模型,一个称为生成器(Generator),另一个称为判别器(Discriminator)。GAN的目标是让生成器尽可能地生成与真实样本相似的数据。 在李宏毅作业代码讲解中,他会介绍GAN的基本原理、算法和代码实现。首先,他会讲解生成器和判别器的结构和原理,包括生成器如何生成样本,以及判别器如何对生成的样本进行评价。 然后,李宏毅会详细解释GAN的损失函数和优化方法。他会讲解如何使用反向传播算法更新生成器和判别器的参数,以使它们在训练中达到更好的表现。此外,他还会解释GAN的训练过程中可能遇到的一些问题,并提供解决方法。 在代码方面,李宏毅会给出一个简单的实例,展示如何使用Python和深度学习框架(如TensorFlow或PyTorch)来实现一个基本的GAN模型。他会详细解释每个代码部分的功能和作用,并给出相应的代码注释,方便学习者理解。 总的来说,李宏毅的GAN网络作业代码讲解涵盖了GAN的基本原理、算法和实现细节。通过他的讲解,学习者可以更好地理解并应用GAN,从而在生成对抗网络领域取得更好的成果。 ### 回答2: 李宏毅是一位著名的机器学习和深度学习专家,他的GAN(生成对抗网络)网络作业代码讲解十分受欢迎。 GAN是一种由生成器和判别器组成的对抗性网络模型。生成器尝试生成与真实数据相似的新样本,而判别器则负责判断这些样本是真实的还是伪造的。GAN网络的训练过程是通过生成器和判别器之间的对抗来进行的。 在李宏毅的GAN网络作业代码讲解中,他通常会从基本概念开始讲解,介绍GAN网络的工作原理和训练过程。他会解释生成器和判别器的结构以及它们的作用,包括如何设计合适的神经网络模型来实现生成器和判别器。 接着,他会具体解释代码中各部分的功能和实现细节。他会展示如何使用Python和深度学习框架(如Tensorflow)来编写GAN网络的代码,并演示如何处理数据、构建网络结构、定义损失函数和优化器等。 此外,李宏毅还会给出一些GAN网络的应用案例,例如生成图像、语音合成等。他会详细说明如何调整和优化代码,以实现更好的生成效果。 总之,李宏毅的GAN网络作业代码讲解是非常有帮助和详细的,对于想要深入了解和学习GAN网络的人来说,这是一份宝贵的学习资料。通过他的讲解,我们可以更好地理解和应用GAN网络,为自己的深度学习项目增添新的工具和技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值