主要环境配置
win10,pycharm
Python3.6
keras2.2.0
numpy1.16.0
pillow8.1.1
scipy1.5.4
tensorflow-gpu1.11.0
先使用自己的配置,没有问题的话就不用更改
数据介绍
Fruits 360
A dataset with 90483 images of 131 fruits and vegetables
每张图片:100x100,真彩(3通道)
数据获取
数据来自于网上公开数据集
https://www.kaggle.com/moltean/fruits
或者,数据及源码:(源码包括两种方式编写的经典卷积神经网络LeNet-5模型)
链接:https://pan.baidu.com/s/1iKSZTu4cPM8d-VxnH4Xx8A
提取码:06wk
另外,人工智能入门四件套免费分享(统计学习方法、机器学习、机器学习实战、深度学习)
链接:https://pan.baidu.com/s/1kG3cRvto75krhjz1Ow4ANw 提取码:b8r1
库引用
import os
from skimage import io
import numpy as np
from sklearn.utils import shuffle
import keras
import tensorflow as tf
数据载入
原来的数据集有131种分类,为了节省训练时间方便学习,分别建了一个用于训练和测试的文件夹,把想要训练的分类从原数据文件夹拷到里面
dir_path1 = 'fruits-360/Training1'
dir_path2 = 'fruits-360/Test1'
#读取数据
def load_data(dir_path):
images = []
labels = []
file = os.listdir(dir_path) #返回一个列表:包含dir_path里的文件名,即分类
n_classes = len(file) #分类数量
n = 0
for l in file:
img = os.listdir(dir_path+'/'+ l)
for i in img:
img_path = dir_path+'/'+ l+'/'+ i
labels.append(int(n))
images.append(io.imread(img_path))
n += 1
return images,labels,n_classes
images,labels,n_classes = load_data(dir_path1)
images_test,labels_test,_ = load_data(dir_path2)
print("种类:",n_classes)
数据预处理
仅进行数组化,打乱顺序,标签转换为独热编码
#数据预处理:
def data_processing(images,labels,n_classes):
train_x = np.array(images)
train_y = np.array(labels)
indx = np