当前位置: 首页 > news >正文

66页实验题

import tensorflow as tf
from tensorflow.keras.datasets import cifar10

1. 加载并预处理 CIFAR-10 数据集

(x_train, y_train), (x_test, y_test) = cifar10.load_data()

像素值归一化(0-255 → 0-1)

x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0

标签转换为独热编码(适配多分类任务)

y_train = tf.keras.utils.to_categorical(y_train, 10)
y_test = tf.keras.utils.to_categorical(y_test, 10)

2. 构建卷积神经网络(CNN)模型

model = tf.keras.Sequential([
# 第一个卷积块(提取低级特征)
tf.keras.layers.Conv2D(32, (3, 3), padding='same', activation='relu', input_shape=(32, 32, 3)),
tf.keras.layers.Conv2D(32, (3, 3), padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),
tf.keras.layers.Dropout(0.25), # 防止过拟合
# 第二个卷积块(提取中级特征)
tf.keras.layers.Conv2D(64, (3, 3), padding='same', activation='relu'),
tf.keras.layers.Conv2D(64, (3, 3), padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),
tf.keras.layers.Dropout(0.25),
# 第三个卷积块(提取高级特征)
tf.keras.layers.Conv2D(128, (3, 3), padding='same', activation='relu'),
tf.keras.layers.Conv2D(128, (3, 3), padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),
tf.keras.layers.Dropout(0.25),
# 全连接层(分类决策)
tf.keras.layers.Flatten(), # 展平特征图
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dropout(0.5),
tf.keras.layers.Dense(10, activation='softmax') # 10类输出,概率归一化
])

3. 编译模型(配置训练参数)

model.compile(
optimizer=tf.keras.optimizers.Adam(learning_rate=0.0001), # 优化器
loss='categorical_crossentropy', # 多分类损失函数
metrics=['accuracy'] # 评估指标(准确率)
)

4. 训练模型

print("开始训练模型...")
history = model.fit(
x_train, y_train,
batch_size=64, # 每批次训练样本数
epochs=50, # 训练轮次
validation_split=0.1, # 10%训练集作为验证集(监控过拟合)
shuffle=True # 每轮打乱训练数据
)

5. 评估模型(测试集验证泛化能力)

print("\n开始评估模型...")
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print(f"\n测试集结果:损失={test_loss:.4f},准确率={test_acc:.4f}")

http://www.zskr.cn/news/28750.html

相关文章:

  • 简单云计算算法--20251023
  • latex输入公式
  • 10.23《程序员修炼之道 从小工到专家》第二章 注重实效的途径 - GENGAR
  • 树状数组求逆序对
  • ExPRT.AI如何预测下一个将被利用的漏洞
  • AI元人文构想的跨学科研究:技术实现与人文影响分析——对自由与责任的再框架化(DeepSeek基于Ai元人文系列文章研究)
  • 日总结 16
  • 解码Linux文件IO之库的制作与应用
  • 20251023 正睿二十连测
  • 日志分析-IIS日志分析
  • Visual Studio 插件 - 喝水提醒 - 指南
  • 10/23
  • 玛哈特十一辊矫平机:把金属板送进“11 次节拍器” - 教程
  • 第3天(中等题+简单题 数组、滑动窗口)
  • ollama v0.12.2 版本更新详解:Qwen3 架构协助、Multi-Regex 分词器、新引擎前后缀匹配等功能升级
  • MySQL主从同步读写分离
  • SwiftUI NavigatorStack 导航容器
  • 深入解析:【仿生机器人】基于 GPT-SoVITS 的 发声器
  • PCL1.12 解决memory.h中EIGEN处中断问题
  • 20251023
  • Java常用机制 - SPI机制详解
  • 2025.10.23——2绿2蓝
  • 采用opencv来识别信用卡的号码
  • 精读《C++20设计模式》:重新理解设计模式系列 - 详解
  • 《程序员修炼之道:从小工到专家》阅读笔记1
  • ski 和 db 模块的通信
  • rocky10自己手动换源
  • layui时间与日期选择器,时间范围查询数据,后端springboot
  • 轻量级图片信息解析程序
  • 2025.10.23 闲话-全局位运算 max 的解法