python中tensorflow如何实现解猫狗识别功能
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇文章主要介绍了python中tensorflow如何实现解猫狗识别功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一,猫狗数据集
千家信息网最后更新 2025年01月17日python中tensorflow如何实现解猫狗识别功能
三,数据集构建
这篇文章主要介绍了python中tensorflow如何实现解猫狗识别功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
一,猫狗数据集数目构成
train | cats:1000 ,dogs:1000 |
---|---|
test | cats: 500,dogs:500 |
validation | cats:500,dogs:500 |
二,数据导入
train_dir = 'Data/train'test_dir = 'Data/test'validation_dir = 'Data/validation'train_datagen = ImageDataGenerator(rescale=1/255, rotation_range=10, width_shift_range=0.2, #图片水平偏移的角度 height_shift_range=0.2, #图片数值偏移的角度 shear_range=0.2, #剪切强度 zoom_range=0.2, #随机缩放的幅度 horizontal_flip=True, #是否进行随机水平翻转# fill_mode='nearest' )train_generator = train_datagen.flow_from_directory(train_dir, (224,224),batch_size=1,class_mode='binary',shuffle=False)test_datagen = ImageDataGenerator(rescale=1/255)test_generator = test_datagen.flow_from_directory(test_dir, (224,224),batch_size=1,class_mode='binary',shuffle=True)validation_datagen = ImageDataGenerator(rescale=1/255)validation_generator = validation_datagen.flow_from_directory( validation_dir,(224,224),batch_size=1,class_mode='binary')print(train_datagen)print(test_datagen)print(train_datagen)
三,数据集构建
我这里是将ImageDataGenerator类里的数据提取出来,将数据与标签分别存放在两个列表,后面在转为np.array,也可以使用model.fit_generator,我将数据放在内存为了后续调参数时模型训练能更快读取到数据,不用每次训练一整轮都去读一次数据(应该是这样的…我是这样理解…)
注意我这里的数据集构建后,三种数据都是存放在内存中的,我电脑内存是16g的可以存放下。
train_data=[]train_labels=[]a=0for data_train, labels_train in train_generator: train_data.append(data_train) train_labels.append(labels_train) a=a+1 if a>1999: breakx_train=np.array(train_data)y_train=np.array(train_labels)x_train=x_train.reshape(2000,224,224,3)
test_data=[]test_labels=[]a=0for data_test, labels_test in test_generator: test_data.append(data_test) test_labels.append(labels_test) a=a+1 if a>999: breakx_test=np.array(test_data)y_test=np.array(test_labels)x_test=x_test.reshape(1000,224,224,3)
validation_data=[]validation_labels=[]a=0for data_validation, labels_validation in validation_generator: validation_data.append(data_validation) validation_labels.append(labels_validation) a=a+1 if a>999: breakx_validation=np.array(validation_data)y_validation=np.array(validation_labels)x_validation=x_validation.reshape(1000,224,224,3)
四,模型搭建
model1 = tf.keras.models.Sequential([ # 第一层卷积,卷积核为,共16个,输入为150*150*1 tf.keras.layers.Conv2D(16,(3,3),activation='relu',padding='same',input_shape=(224,224,3)), tf.keras.layers.MaxPooling2D((2,2)), # 第二层卷积,卷积核为3*3,共32个, tf.keras.layers.Conv2D(32,(3,3),activation='relu',padding='same'), tf.keras.layers.MaxPooling2D((2,2)), # 第三层卷积,卷积核为3*3,共64个, tf.keras.layers.Conv2D(64,(3,3),activation='relu',padding='same'), tf.keras.layers.MaxPooling2D((2,2)), # 数据铺平 tf.keras.layers.Flatten(), tf.keras.layers.Dense(64,activation='relu'), tf.keras.layers.Dropout(0.5), tf.keras.layers.Dense(1,activation='sigmoid')])print(model1.summary())
模型summary:
五,模型训练
model1.compile(optimize=tf.keras.optimizers.SGD(0.00001), loss=tf.keras.losses.binary_crossentropy, metrics=['acc'])history1=model1.fit(x_train,y_train,# validation_split=(0~1) 选择一定的比例用于验证集,可被validation_data覆盖 validation_data=(x_validation,y_validation), batch_size=10, shuffle=True, epochs=10)model1.save('cats_and_dogs_plain1.h6')print(history1)
plt.plot(history1.epoch,history1.history.get('acc'),label='acc')plt.plot(history1.epoch,history1.history.get('val_acc'),label='val_acc')plt.title('正确率')plt.legend()
可以看到我们的模型泛化能力还是有点差,测试集的acc能达到0.85以上,验证集却在0.65~0.70之前跳动。
六,模型测试
model1.evaluate(x_validation,y_validation)
最后我们的模型在测试集上的正确率为0.67,可以说还不够好,有点过拟合,可能是训练数据不够多,后续可以数据增广或者从验证集、测试集中调取一部分数据用于训练模型,可能效果好一些。
感谢你能够认真阅读完这篇文章,希望小编分享的"python中tensorflow如何实现解猫狗识别功能"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
数据
模型
卷积
训练
篇文章
测试
内存
验证
功能
不够
图片
正确率
水平
角度
偏移
不用
两个
二层
价值
兴趣
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器启动时亮黄灯
一句网络安全法
英雄之城2每个服务器世界地图
服务器经常重启对硬件有影响吗
项目软件开发费
苹果的云盘怎么连接服务器
app商城服务器
邯郸专业软件开发定制
网络安全与信息安全+通知
网络安全渗透测试的流程
克隆服务器ip
业务系统数据库高并发
云服务器的安全如何做
软件开发者致使软件闪退
播放网络网络安全
数据库创建表主键外键
可以同听小说的软件开发
广州喜啡互联网科技有限公司
网络技术需要掌握哪些知识
服务器电脑做服务器
软件开发毕业论文下载免费
计算机网络技术主要需要什么软件
登录sv显示连接服务器失败
工业网络技术专业就业方向
数据库管理师是做什么工作的
ibm服务器代码
河南睿莱网络技术有限公司
东方货运公司数据库的样本
软件开发课程培训教育班
网络安全的几条规则