机器学习猫狗分类

编程入门 行业动态 更新时间:2024-10-07 04:28:40

机器学习<a href=https://www.elefans.com/category/jswz/34/1768967.html style=猫狗分类"/>

机器学习猫狗分类

Task02:基于决策树的分类预测

猫狗分类

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
from keras.optimizers import RMSpropfrom keras.preprocessing.image import ImageDataGenerator# 下面的一部分是进行数据预处理
import os
import shutildataset_dir = './do_test/test/'
train_cats_dir = './do_test/train/cats/'
train_dogs_dir = './do_test/train/dogs/'
validation_cats_dir = './do_test/validation/cats/'
validation_dogs_dir = './do_test/validation/dogs/'### 数据搬移,构建训练集验证集
if not os.path.exists(dataset_dir):os.makedirs(dataset_dir)
if not os.path.exists(train_cats_dir):os.makedirs(train_cats_dir)
if not os.path.exists(train_dogs_dir):os.makedirs(train_dogs_dir)
if not os.path.exists(validation_cats_dir):os.makedirs(validation_cats_dir)
if not os.path.exists(validation_dogs_dir):os.makedirs(validation_dogs_dir)cat_count = 0
dog_count = 0cats_dir = os.path.join(dataset_dir,'cat')
dog_dir = os.path.join(dataset_dir,'dog')#### 将照片文件名都放置一个列表中,后续再遍历
image_list = os.listdir(dog_dir) +os.listdir(cats_dir)
for image in image_list:print(image)animal = image.split('.')[0]if animal == 'cat':cat_count += 1if cat_count % 5 == 0:  ### 训练集和验证集:80%:20%image_path = os.path.join(cats_dir, image)shutil.move(image_path, validation_cats_dir) ### 猫的图片迁移到验证集else:image_path = os.path.join(cats_dir, image)shutil.move(image_path, train_cats_dir)  ### 猫的图片迁移到训练集if animal == 'dog':dog_count += 1if dog_count % 5 == 0:image_path = os.path.join(dog_dir, image)shutil.move(image_path, validation_dogs_dir)else:image_path = os.path.join(dog_dir, image)shutil.move(image_path, train_dogs_dir)
### 装载训练集和验证集
train_dir = './do_test/train/'
validation_dir = './do_test/validation/'train_datagen = ImageDataGenerator(rescale=1. / 255)
validation_datagen = ImageDataGenerator(rescale=1. / 255)train_generator = train_datagen.flow_from_directory(train_dir,  # target directorytarget_size=(150, 150),  # resize图片将图片压缩到150*150大小,加快训练速度batch_size=20, ### 每二十张为一组class_mode='binary'
)validation_generator = validation_datagen.flow_from_directory(validation_dir,target_size=(150, 150),batch_size=20,class_mode='binary'
)for data_batch, labels_batch in train_generator:print('data batch shape:', data_batch.shape)print('labels batch shape:', labels_batch.shape)break### 构建神经网络
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu',input_shape=(150, 150, 3)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dense(1, activation='sigmoid'))### 展示神经网络架构
print(model.summary())### 设置神经网络损失函数,优化函数,验证指标
modelpile(loss='binary_crossentropy',optimizer=RMSprop(lr=1e-4),metrics=['acc'])### 训练模型
hist = model.fit_generator(train_generator,steps_per_epoch=10,epochs=10,  ### 训练训练十次validation_data=validation_generator,validation_steps=20)### 存储模型
model.save('cat_and_dog.h5')

更多推荐

机器学习猫狗分类

本文发布于:2024-02-28 07:56:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1769144.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:猫狗   机器

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!