keras和tensorflow猫狗图像分类
Posted 我要学习java和python
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keras和tensorflow猫狗图像分类相关的知识,希望对你有一定的参考价值。
import tensorflow as tf
import sys
import os,random
from matplotlib.pyplot import imshow
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import pyplot
from keras.utils import to_categorical
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Dense
from keras.layers import Flatten
from keras.optimizers import SGD
from keras.models import load_model
from keras.utils import plot_model
from PIL import Image
from keras.preprocessing.image import ImageDataGenerator
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)
#创建一个cnn模型
def cnn_model():
#使用序列模型
model=Sequential()
#卷积层
model.add(Conv2D(32,(3,3),activation="relu",padding="same",input_shape=(200,200,3)))
#最大池化层
model.add(MaxPooling2D((2,2)))
#Flatten层
model.add(Flatten())
#全连接层
model.add(Dense(128,activation="relu"))
model.add(Dense(1,activation="sigmoid"))
#编译模型
opt=SGD(lr=0.001,momentum=0.9)
model.compile(optimizer=opt,loss='binary_crossentropy',metrics=['accuracy'])
return model
# model=cnn_model()
# plot_model(model,to_file='cnn_model.png',dpi=100,show_shapes=True,show_layer_names=True)
def train_cnn_model():
#实例化模型
model=cnn_model()
#创建图片生成器
datagen=ImageDataGenerator(rescale=1.0/255.0)
train_it=datagen.flow_from_directory('./datasets/train1/',class_mode='binary',batch_size=64,target_size=(200,200))
#训练模型
model.fit_generator(train_it,steps_per_epoch=len(train_it),epochs=1,verbose=1)
def predict(pli_im,model):
pli_im=pli_im.resize((200,200))
array_im=np.asarray(pli_im)
array_im = array_im[np.newaxis,:]
result=model.predict([[array_im]])
if result[0][0]>0.5:
print("预测结果是狗")
else:
print("预测结果是猫")
model_path= "./datasets/dogs_cats/model/basic_cnn_model.h5"
model=load_model(model_path)
folder=r"./datasets/dogs_cats/data/test/"
file_path=folder+random.choice(os.listdir(folder))
pli_im=Image.open(file_path,'r')
imshow(np.asarray(pli_im))
predict(pli_im,model)
plt.show()
以上是关于keras和tensorflow猫狗图像分类的主要内容,如果未能解决你的问题,请参考以下文章