IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> python迁移学习 图像分类 -> 正文阅读

[人工智能]python迁移学习 图像分类

import numpy as np
from keras.applications import VGG16, ResNet50
from keras.preprocessing.image import ImageDataGenerator
from keras import models, layers, optimizers
from keras.layers.normalization import BatchNormalization
from keras.preprocessing.image import load_img

vgg_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
train_dir = './flower_photos/train'
valid_dir = './flower_photos/valid'

n_train = 500 * 3
n_val = 50 * 3
datagen = ImageDataGenerator(rescale=1. / 255)
batch_size = 16

# train_features = np.zeros(shape=(n_train, 1, 1, 2048))
train_features = np.zeros(shape=(n_train, 7, 7, 512))
train_labels = np.zeros(shape=(n_train, 3))
train_generator = datagen.flow_from_directory(train_dir, target_size=(224, 224),
                                              batch_size=batch_size,
                                              class_mode='categorical',
                                              shuffle=True)
i = 0
for inptuts_batch, labels_batch in train_generator:
    features_batch = vgg_model.predict(inptuts_batch)
    train_features[i * batch_size:(i + 1) * batch_size] = features_batch
    train_labels[i * batch_size:(i + 1) * batch_size] = labels_batch
    i += 1
    if i * batch_size >= n_train: break

train_features = np.reshape(train_features, (n_train, 7 * 7 * 512))
# train_features = np.reshape(train_features, (n_train, 1 * 1 * 2048))
validation_features = np.zeros(shape=(n_val, 7, 7, 512))
# validation_features = np.zeros(shape=(n_val, 1, 1, 2048))
validation_labels = np.zeros(shape=(n_val, 3))

validation_generator = datagen.flow_from_directory(
    valid_dir,
    target_size=(224, 224),
    batch_size=batch_size,
    class_mode='categorical',
    shuffle=False)
i = 0
for inputs_batch, labels_batch in validation_generator:
    features_batch = vgg_model.predict(inputs_batch)
    validation_features[i * batch_size: (i + 1) * batch_size] = features_batch
    validation_labels[i * batch_size: (i + 1) * batch_size] = labels_batch
    i += 1
    if i * batch_size >= n_val:
        break

validation_features = np.reshape(validation_features, (n_val, 7 * 7 * 512))
# validation_features = np.reshape(validation_features, (n_val, 1 * 1 * 2048))

from keras import models
from keras import layers
from keras import optimizers
from keras.layers.normalization import BatchNormalization

model = models.Sequential()
model.add(layers.Dense(512, activation='relu', input_dim=7 * 7 * 512))
# model.add(layers.Dense(512, activation='relu', input_dim=1 * 1 * 2048))
model.add(BatchNormalization())
model.add(layers.Dropout(0.5))
# model.add(layers.Dense(256, activation='relu'))
# model.add(BatchNormalization())
# model.add(layers.Dropout(0.5))
model.add(layers.Dense(3, activation='softmax'))

model.compile(optimizer=optimizers.Adam(lr=1e-4),  # optimizers.RMSprop(lr=1e-3),
              loss='categorical_crossentropy',
              metrics=['acc'])

history = model.fit(train_features,
                    train_labels,
                    epochs=10,
                    batch_size=batch_size,
                    validation_data=(validation_features, validation_labels))

fnames = validation_generator.filenames
ground_truth = validation_generator.classes
label2index = validation_generator.class_indices
# Getting the mapping from class index to class label
idx2label = dict((v, k) for k, v in label2index.items())
predictions = model.predict_classes(validation_features)
prob = model.predict(validation_features)
errors = np.where(predictions != ground_truth)[0]
print("No of errors = {}/{}".format(len(errors), n_val))

print(label2index)

print(len(train_features), len(validation_features))
import matplotlib.pylab as plt
from keras.preprocessing.image import load_img

# errors = np.random.choice(errors, 5)
plt.figure(figsize=(20, 12))
for i in range(len(errors)):
    pred_class = np.argmax(prob[errors[i]])
    pred_label = idx2label[pred_class]
    original = load_img('{}/{}'.format(valid_dir, fnames[errors[i]]))
    plt.subplot(5, 6, i+1), plt.imshow(original), plt.axis('off')
    plt.title('Original label:{}\nPrediction:{}\nconfidence:{:.3f}'.format(
        fnames[errors[i]].split('\\')[0],
        pred_label,
        prob[errors[i]][pred_class]), size=15)
plt.savefig('error.png')
plt.show()

在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-31 15:27:21  更:2021-08-31 15:29:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 16:27:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码