cnn对猫狗分类

版权声明:本文为pureszgd原创文章,未经允许不得转载, 要转载请评论留言! https://blog.csdn.net/pureszgd/article/details/83278027
from keras.models import Sequential
from keras.layers import Conv2D, MaxPool2D, Activation, Dropout, Flatten, Dense
from keras.optimizers import Adam
from keras.preprocessing.image import ImageDataGenerator, img_to_array, load_img
from keras.models import load_model
import numpy as np

# define model
model = Sequential()
model.add(Conv2D(input_shape=(150, 150, 3), filters=32, kernel_size=3, padding='same', activation='relu'))
model.add(Conv2D(filters=32, kernel_size=3, padding='same', activation='relu'))
model.add(MaxPool2D(pool_size=2, strides=2))

model.add(Conv2D(filters=64, kernel_size=3, padding='same', activation='relu'))
model.add(Conv2D(filters=64, kernel_size=3, padding='same', activation='relu'))
model.add(MaxPool2D(pool_size=2, strides=2))

model.add(Conv2D(filters=128, kernel_size=3, padding='same', activation='relu'))
model.add(Conv2D(filters=128, kernel_size=3, padding='same', activation='relu'))
model.add(MaxPool2D(pool_size=2, strides=2))

model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='softmax'))

# define optimizer
adam = Adam(lr=1e-4)

# define optimizer, value function, calculate accuracy
model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=['accuracy'])

train_datagen = ImageDataGenerator(
    rotation_range=40,
    width_shift_range=0.2,
    height_shift_range=0.2,
    rescale=1/255,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True,
    fill_mode='nearest'
)

test_datagen = ImageDataGenerator(
    rescale=1/255
)

batch_size = 32

# create train data
train_generator = train_datagen.flow_from_directory(
    'train',
    target_size=(150, 150),
    batch_size=batch_size
)

# create test data
test_generator = test_datagen.flow_from_directory(
    'test',
    target_size=(150, 150),
    batch_size=batch_size
)

print train_generator.class_indices

model.fit_generator(train_generator, epochs=30, validation_data=test_generator, steps_per_epoch=150/batch_size, validation_steps=1)
model.save('model_cnn.h5')


label = np.array(['cat', 'dog'])
model = load_model('model_cnn.h5')

image = load_img('test/cat/1.jpg')
image = image.resize((150, 150))
image = img_to_array(image)
image = image / 255
image = np.expand_dims(image, 0)
print image.shape

print label[model.predict_classes(image)]
Using TensorFlow backend.
Found 400 images belonging to 2 classes.
Found 200 images belonging to 2 classes.
{'dog': 1, 'cat': 0}
Epoch 1/30
2018-10-22 19:55:12.961810: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA

1/4 [======>.......................] - ETA: 10s - loss: 9.0665 - acc: 0.4375
2/4 [==============>...............] - ETA: 5s - loss: 8.0591 - acc: 0.5000 
3/4 [=====================>........] - ETA: 2s - loss: 8.8986 - acc: 0.4479
4/4 [==============================] - 11s 3s/step - loss: 8.4368 - acc: 0.4766 - val_loss: 8.0590 - val_acc: 0.5000
Epoch 2/30

1/4 [======>.......................] - ETA: 6s - loss: 7.5554 - acc: 0.5312
2/4 [==============>...............] - ETA: 4s - loss: 7.8072 - acc: 0.5156
3/4 [=====================>........] - ETA: 2s - loss: 7.7233 - acc: 0.5208
4/4 [==============================] - 9s 2s/step - loss: 7.5554 - acc: 0.5312 - val_loss: 9.5701 - val_acc: 0.4062
Epoch 3/30

1/4 [======>.......................] - ETA: 6s - loss: 7.0517 - acc: 0.5625
2/4 [==============>...............] - ETA: 4s - loss: 8.3109 - acc: 0.4844
3/4 [=====================>........] - ETA: 2s - loss: 8.3948 - acc: 0.4792
4/4 [==============================] - 9s 2s/step - loss: 8.0590 - acc: 0.5000 - val_loss: 5.0369 - val_acc: 0.6875
Epoch 4/30

1/4 [======>.......................] - ETA: 5s - loss: 9.0664 - acc: 0.4375
2/4 [==============>...............] - ETA: 4s - loss: 7.3035 - acc: 0.5469
3/4 [=====================>........] - ETA: 2s - loss: 6.7159 - acc: 0.5833
4/4 [==============================] - 10s 2s/step - loss: 7.2531 - acc: 0.5500 - val_loss: 8.0590 - val_acc: 0.5000
Epoch 5/30

1/4 [======>.......................] - ETA: 6s - loss: 9.0664 - acc: 0.4375
2/4 [==============>...............] - ETA: 4s - loss: 9.5701 - acc: 0.4062
3/4 [=====================>........] - ETA: 2s - loss: 8.8985 - acc: 0.4479
4/4 [==============================] - 10s 3s/step - loss: 8.4368 - acc: 0.4766 - val_loss: 8.0590 - val_acc: 0.5000
Epoch 6/30

1/4 [======>.......................] - ETA: 7s - loss: 8.5627 - acc: 0.4688
2/4 [==============>...............] - ETA: 4s - loss: 8.0590 - acc: 0.5000
3/4 [=====================>........] - ETA: 2s - loss: 7.7233 - acc: 0.5208
4/4 [==============================] - 11s 3s/step - loss: 8.1850 - acc: 0.4922 - val_loss: 9.5701 - val_acc: 0.4062
Epoch 7/30

1/4 [======>.......................] - ETA: 7s - loss: 9.0664 - acc: 0.4375
2/4 [==============>...............] - ETA: 3s - loss: 9.5701 - acc: 0.4062
3/4 [=====================>........] - ETA: 2s - loss: 9.7380 - acc: 0.3958
4/4 [==============================] - 9s 2s/step - loss: 9.6852 - acc: 0.3991 - val_loss: 8.0590 - val_acc: 0.5000
Epoch 8/30

1/4 [======>.......................] - ETA: 6s - loss: 8.0590 - acc: 0.5000
2/4 [==============>...............] - ETA: 4s - loss: 8.3109 - acc: 0.4844
3/4 [=====================>........] - ETA: 2s - loss: 8.0590 - acc: 0.5000
4/4 [==============================] - 10s 2s/step - loss: 8.1850 - acc: 0.4922 - val_loss: 8.0590 - val_acc: 0.5000
Epoch 9/30

1/4 [======>.......................] - ETA: 6s - loss: 8.0590 - acc: 0.5000
2/4 [==============>...............] - ETA: 4s - loss: 8.0590 - acc: 0.5000
3/4 [=====================>........] - ETA: 2s - loss: 7.8912 - acc: 0.5104
4/4 [==============================] - 10s 2s/step - loss: 7.5554 - acc: 0.5312 - val_loss: 7.5554 - val_acc: 0.5312
Epoch 10/30

1/4 [======>.......................] - ETA: 6s - loss: 9.0664 - acc: 0.4375
2/4 [==============>...............] - ETA: 4s - loss: 7.8072 - acc: 0.5156
3/4 [=====================>........] - ETA: 1s - loss: 6.8838 - acc: 0.5729
4/4 [==============================] - 9s 2s/step - loss: 6.9797 - acc: 0.5670 - val_loss: 8.0590 - val_acc: 0.5000
Epoch 11/30

1/4 [======>.......................] - ETA: 8s - loss: 8.5627 - acc: 0.4688
2/4 [==============>...............] - ETA: 5s - loss: 7.8072 - acc: 0.5156
3/4 [=====================>........] - ETA: 2s - loss: 7.3875 - acc: 0.5417
4/4 [==============================] - 11s 3s/step - loss: 7.1776 - acc: 0.5547 - val_loss: 8.0590 - val_acc: 0.5000
Epoch 12/30

1/4 [======>.......................] - ETA: 7s - loss: 7.0517 - acc: 0.5625
2/4 [==============>...............] - ETA: 4s - loss: 8.8146 - acc: 0.4531
3/4 [=====================>........] - ETA: 2s - loss: 9.0664 - acc: 0.4375
4/4 [==============================] - 10s 3s/step - loss: 9.3183 - acc: 0.4219 - val_loss: 8.0590 - val_acc: 0.5000
Epoch 13/30

1/4 [======>.......................] - ETA: 6s - loss: 8.5627 - acc: 0.4688
2/4 [==============>...............] - ETA: 4s - loss: 8.0590 - acc: 0.5000
3/4 [=====================>........] - ETA: 2s - loss: 7.8912 - acc: 0.5104
4/4 [==============================] - 9s 2s/step - loss: 7.9295 - acc: 0.5080 - val_loss: 8.5627 - val_acc: 0.4688
Epoch 14/30

1/4 [======>.......................] - ETA: 6s - loss: 8.5627 - acc: 0.4688
2/4 [==============>...............] - ETA: 4s - loss: 8.0590 - acc: 0.5000
3/4 [=====================>........] - ETA: 2s - loss: 7.8912 - acc: 0.5104
4/4 [==============================] - 10s 2s/step - loss: 7.8072 - acc: 0.5156 - val_loss: 8.0590 - val_acc: 0.5000
Epoch 15/30

1/4 [======>.......................] - ETA: 6s - loss: 6.5480 - acc: 0.5938
2/4 [==============>...............] - ETA: 4s - loss: 7.3035 - acc: 0.5469
3/4 [=====================>........] - ETA: 2s - loss: 6.8838 - acc: 0.5729
4/4 [==============================] - 10s 3s/step - loss: 7.3035 - acc: 0.5469 - val_loss: 11.5849 - val_acc: 0.2812
Epoch 16/30

1/4 [======>.......................] - ETA: 6s - loss: 9.5701 - acc: 0.4062
2/4 [==============>...............] - ETA: 4s - loss: 9.0664 - acc: 0.4375
3/4 [=====================>........] - ETA: 2s - loss: 8.5627 - acc: 0.4688
4/4 [==============================] - 10s 3s/step - loss: 8.8146 - acc: 0.4531 - val_loss: 6.5480 - val_acc: 0.5938
Epoch 17/30

1/4 [======>.......................] - ETA: 3s - loss: 10.0738 - acc: 0.3750
2/4 [==============>...............] - ETA: 3s - loss: 10.0738 - acc: 0.3750
3/4 [=====================>........] - ETA: 1s - loss: 8.8985 - acc: 0.4479 
4/4 [==============================] - 9s 2s/step - loss: 8.6491 - acc: 0.4634 - val_loss: 8.0590 - val_acc: 0.5000
Epoch 18/30

1/4 [======>.......................] - ETA: 6s - loss: 8.5627 - acc: 0.4688
2/4 [==============>...............] - ETA: 4s - loss: 7.5554 - acc: 0.5312
3/4 [=====================>........] - ETA: 2s - loss: 7.8912 - acc: 0.5104
4/4 [==============================] - 10s 3s/step - loss: 8.0590 - acc: 0.5000 - val_loss: 6.5480 - val_acc: 0.5938
Epoch 19/30

1/4 [======>.......................] - ETA: 6s - loss: 8.5627 - acc: 0.4688
2/4 [==============>...............] - ETA: 4s - loss: 8.0590 - acc: 0.5000
3/4 [=====================>........] - ETA: 2s - loss: 7.5554 - acc: 0.5312
4/4 [==============================] - 10s 3s/step - loss: 7.8072 - acc: 0.5156 - val_loss: 8.5627 - val_acc: 0.4688
Epoch 20/30

1/4 [======>.......................] - ETA: 6s - loss: 8.0590 - acc: 0.5000
2/4 [==============>...............] - ETA: 3s - loss: 8.5627 - acc: 0.4688
3/4 [=====================>........] - ETA: 1s - loss: 9.0664 - acc: 0.4375
4/4 [==============================] - 9s 2s/step - loss: 9.1959 - acc: 0.4295 - val_loss: 7.5554 - val_acc: 0.5312
Epoch 21/30

1/4 [======>.......................] - ETA: 6s - loss: 6.5480 - acc: 0.5938
2/4 [==============>...............] - ETA: 4s - loss: 7.0517 - acc: 0.5625
3/4 [=====================>........] - ETA: 2s - loss: 7.5554 - acc: 0.5312
4/4 [==============================] - 10s 2s/step - loss: 7.1776 - acc: 0.5547 - val_loss: 6.0443 - val_acc: 0.6250
Epoch 22/30

1/4 [======>.......................] - ETA: 6s - loss: 10.0738 - acc: 0.3750
2/4 [==============>...............] - ETA: 4s - loss: 9.0664 - acc: 0.4375 
3/4 [=====================>........] - ETA: 2s - loss: 8.3948 - acc: 0.4792
4/4 [==============================] - 10s 3s/step - loss: 8.0590 - acc: 0.5000 - val_loss: 9.5701 - val_acc: 0.4062
Epoch 23/30

1/4 [======>.......................] - ETA: 6s - loss: 6.5480 - acc: 0.5938
2/4 [==============>...............] - ETA: 4s - loss: 7.5554 - acc: 0.5312
3/4 [=====================>........] - ETA: 1s - loss: 8.3948 - acc: 0.4792
4/4 [==============================] - 9s 2s/step - loss: 8.3900 - acc: 0.4795 - val_loss: 8.5627 - val_acc: 0.4688
Epoch 24/30

1/4 [======>.......................] - ETA: 6s - loss: 8.5627 - acc: 0.4688
2/4 [==============>...............] - ETA: 4s - loss: 7.8072 - acc: 0.5156
3/4 [=====================>........] - ETA: 2s - loss: 8.0590 - acc: 0.5000
4/4 [==============================] - 10s 3s/step - loss: 8.3109 - acc: 0.4844 - val_loss: 8.0590 - val_acc: 0.5000
Epoch 25/30

1/4 [======>.......................] - ETA: 6s - loss: 7.5554 - acc: 0.5312
2/4 [==============>...............] - ETA: 4s - loss: 9.0664 - acc: 0.4375
3/4 [=====================>........] - ETA: 2s - loss: 8.8985 - acc: 0.4479
4/4 [==============================] - 10s 3s/step - loss: 9.0664 - acc: 0.4375 - val_loss: 6.0443 - val_acc: 0.6250
Epoch 26/30

1/4 [======>.......................] - ETA: 7s - loss: 6.0443 - acc: 0.6250
2/4 [==============>...............] - ETA: 4s - loss: 7.3035 - acc: 0.5469
3/4 [=====================>........] - ETA: 2s - loss: 6.0443 - acc: 0.6250
4/4 [==============================] - 9s 2s/step - loss: 6.7351 - acc: 0.5821 - val_loss: 7.5554 - val_acc: 0.5312
Epoch 27/30

1/4 [======>.......................] - ETA: 6s - loss: 8.5627 - acc: 0.4688
2/4 [==============>...............] - ETA: 4s - loss: 9.0664 - acc: 0.4375
3/4 [=====================>........] - ETA: 2s - loss: 8.5627 - acc: 0.4688
4/4 [==============================] - 10s 3s/step - loss: 8.1850 - acc: 0.4922 - val_loss: 9.0664 - val_acc: 0.4375
Epoch 28/30

1/4 [======>.......................] - ETA: 7s - loss: 10.5775 - acc: 0.3438
2/4 [==============>...............] - ETA: 4s - loss: 9.3183 - acc: 0.4219 
3/4 [=====================>........] - ETA: 2s - loss: 8.8985 - acc: 0.4479
4/4 [==============================] - 10s 2s/step - loss: 8.4368 - acc: 0.4766 - val_loss: 6.0443 - val_acc: 0.6250
Epoch 29/30

1/4 [======>.......................] - ETA: 6s - loss: 7.0517 - acc: 0.5625
2/4 [==============>...............] - ETA: 4s - loss: 7.5554 - acc: 0.5312
3/4 [=====================>........] - ETA: 2s - loss: 7.5554 - acc: 0.5312
4/4 [==============================] - 10s 3s/step - loss: 8.0590 - acc: 0.5000 - val_loss: 8.0590 - val_acc: 0.5000
Epoch 30/30

1/4 [======>.......................] - ETA: 3s - loss: 4.0295 - acc: 0.7500
2/4 [==============>...............] - ETA: 3s - loss: 5.7924 - acc: 0.6406
3/4 [=====================>........] - ETA: 1s - loss: 6.8838 - acc: 0.5729
4/4 [==============================] - 9s 2s/step - loss: 7.1380 - acc: 0.5571 - val_loss: 8.0590 - val_acc: 0.5000
(1, 150, 150, 3)
['cat']

猫狗资源下载
https://github.com/hongrui16/myTensorFlowTutorials/tree/master/%E7%8C%AB%E7%8B%97%E8%AF%86%E5%88%AB

猜你喜欢

转载自blog.csdn.net/pureszgd/article/details/83278027