图像识别-cnn

import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import numpy as np

# 1. 加载数据并预处理
mnist = tf.keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# 添加通道维度并归一化
train_images = np.expand_dims(train_images, axis=-1) / 255.0  # 形状变为 (60000, 28, 28, 1)
test_images = np.expand_dims(test_images, axis=-1) / 255.0    # (10000, 28, 28, 1)

# 2. 数据增强
datagen = ImageDataGenerator(
    rotation_range=10,      # 随机旋转角度范围
    zoom_range=0.1,         # 随机缩放范围
    width_shift_range=0.1,  # 水平平移
    height_shift_range=0.1  # 垂直平移
)

# 3. 构建CNN模型(更适合图像)
model = tf.keras.Sequential([
    tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)),
    tf.keras.layers.MaxPooling2D((2,2)),
    tf.keras.layers.Conv2D(64, (3,3), activation='relu'),
    tf.keras.layers.MaxPooling2D((2,2)),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10, activation='softmax')
])

# 4. 编译模型
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 5. 训练(使用数据增强)
model.fit(datagen.flow(train_images, train_labels, batch_size=32),
          epochs=5,
          validation_data=(test_images, test_labels))

# 6. 评估
test_loss, test_acc = model.evaluate(test_images, test_labels)
print(f"测试集准确率: {test_acc:.2%}")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值