cnn图像二分类 python_TensorFlow2基础:CNN图像分类

1. 导包

import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

import tensorflow as tf

from sklearn.preprocessing import StandardScaler

from sklearn.model_selection import train_test_split

2. 图像分类 fashion_mnist

数据处理

# 原始数据

(X_train_all, y_train_all),(X_test, y_test) =

tf.keras.datasets.fashion_mnist.load_data()

# 训练集、验证集拆分

X_train, X_valid, y_train, y_valid = train_test_split(X_train_all,

y_train_all, test_size=0.25)

# 数据标准化,你也可以用除以255的方式实现归一化

# 注意最后reshape中的1,代表图像只有一个channel,即当前图像是灰度图

scaler = StandardScaler()

X_train_scaled = scaler.fit_transform(X_train.reshape(-1, 28 *

28)).reshape(-1, 28, 28, 1)

X_valid_scaled = scaler.transform(X_valid.reshape(-1, 28 * 28)).reshape(-1,

28, 28, 1)

X_test_scaled = scaler.transform(X_test.reshape(-1, 28 * 28)).reshape(-1,

28, 28, 1)

构建CNN模型

model = tf.keras.models.Sequential()

# 多个卷积层

model.add(tf.keras.layers.Conv2D(filters=32, kernel_size=[5, 5],

padding="same", activation="relu", input_shape=(28, 28, 1)))

model.add(tf.keras.layers.MaxPool2D(pool_size=[2, 2], strides=2))

model.add(tf.keras.layers.Conv2D(filters=64, kernel_size=[5, 5],

padding="same", activation="relu"))

model.add(tf.keras.layers.MaxPool2D(pool_size=[2, 2], strides=2))

# 将前面卷积层得出的多维数据转为一维

# 7和前面的kernel_size、padding、MaxPool2D有关

# Conv2D: 28*28 -> 28*28 (因为padding="same")

# MaxPool2D: 28*28 -> 14*14

# Conv2D: 14*14 -> 14*14 (因为padding="same")

# MaxPool2D: 14*14 -> 7*7

model.add(tf.keras.layers.Reshape(target_shape=(7 * 7 * 64,)))

# 传入全连接层

model.add(tf.keras.laye

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值