李宏毅CNN作业的笔记-食物分类

本文记录了作者在李宏毅课程中完成CNN食物分类作业的过程,包括数据读取、CNN模型设计、训练网络的步骤。在训练过程中遇到过训练集与验证集表现不一致的问题,尝试了Dropout和EarlyStopping解决,但效果不佳。最后,作者意识到可能是CNN网络结构的问题,建议更多关注卷积层的设计。
摘要由CSDN通过智能技术生成

第一次做MachineLearning的笔记,因为实在是碰到问题了。最近跟着李宏毅老师学习到了很多知识,课程地址:点击前往

第三个作业是CNN。但是课程网站里的ExampleCode给的是Pytorch版本的,而我用的是Tensorflow,懒得再安装pytorch环境运行,所以从头到尾自己用keras写了一下,在这篇文章里我记录一下我出现的一些问题。

作业描述

其实当作业给的数据集有1.0GBytes的时候,我就知道问题没这么简单。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HRO6LbAA-1586609341890)(/Users/wanglei/Desktop/Study Monitor/作业/简书/李宏毅CNN作业的笔记-食物分类/1.png)]

其中,training文件夹中有一万张图片,validation文件夹中有3000张验证图片。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ii6WARFt-1586609341892)(/Users/wanglei/Desktop/Study Monitor/作业/简书/李宏毅CNN作业的笔记-食物分类/2.png)]

他们的文件名数字开头就是他们的类型,我们需要分类图片中的食物类型,一万张图片,共11种食物

读取数据

def readfile(path, label):
    # label 是一個 boolean variable,代表需不需要回傳 y 值
    image_dir = sorted(os.listdir(path))
    x = np.zeros((len(image_dir), 128, 128, 3), dtype=np.uint8)
    y = np.zeros((len(image_dir)), dtype=np.uint8)
    for i, file in enumerate(image_dir):
        img = cv2.imread(os.path.join(path, file))
        x[i, :, :] = cv2.resize(img,(128, 128))
        if label:
            y[i] = int(file.split("_")[0])
    if label:
        return x, y
    else:
        return x
workspace_dir = './data'
print("Reading data")
train_x, train_y = readfile(os.path.join(workspace_dir, "training"), True)
print("Size of training data = {}".format(len(train_x)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值