Keras训练一个基本体系化的分类模型流程案例

Keras训练一个基本体系化的分类模型流程案例

在这里插入图片描述

import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils        # 导入keras提供的numpy工具包
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD# 载入数据
(x_train,y_train),(x_test,y_test) = mnist.load_data()
print("x_shape:",x_train.shape,"y_shape:",y_train.shape)# 将数据转换由(60000,28,28)转换为(60000,784),并进行归一化除以255
x_train = x_train.reshape(x_train.shape[0],-1)/255.0
x_test = x_test.reshape(x_test.shape[0], -1)/255.0
print(x_train.shape,x_test.shape)# 将数据转换为one-hot编码的格式
y_train = np_utils.to_categorical(y_train, num_classes=10)
y_test = np_utils.to_categorical(y_test, num_classes=10)# 创建模型,输入是784个神经元,输出为10个神经元
model = Sequential([Dense(units=10,input_dim=784,bias_initializer="one",activation="softmax")]
)# 自定义优化器
sgd=SGD(lr=0.01)
# 编译模型,定义优化器,loss_function,训练过程中计算准确率
# model.compile(optimizer=sgd,loss="mse",metrics=["accuracy"],)   # 使用均方差作为损失函数
model.compile(optimizer=sgd,loss="categorical_crossentropy",metrics=["accuracy"],)   # 使用交叉熵作为损失函数# 喂入数据集,并规定每次喂入32张图像,设定迭代周期
model.fit(x_train,y_train,batch_size=32,epochs=100)# 评估模型
loss,accuracy = model.evaluate(x_test, y_test)
print("test losee:",loss,"accuracy:",accuracy)

示例二:

import picklefrom sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import numpy as npfrom keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.optimizers import SGD
from keras.regularizers import l2
import matplotlib.pyplot as pltdata_dict = pickle.load(open('./data.pickle', 'rb'))data = data_dict['data']
labels = data_dict['labels']
for index_data,data_arr in enumerate(data):if len(data_arr) != 42:print('---删除掉异常元素---', index_data)del data[index_data]del labels[index_data]data=np.vstack(data)print('+++++++++++++++++++',data.shape)
labels = np.asarray(data_dict['labels'])x_train, x_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, shuffle=True, stratify=labels)print(x_train.shape)# 将数据集标签改为one-hot编码的格式
y_train = np_utils.to_categorical(y_train, num_classes=9)
y_test = np_utils.to_categorical(y_test, num_classes=9)# 创建网络模型,输入是784个神经元,输出为10类
model = Sequential([Dense(units=200,input_dim=42,bias_initializer="one",activation="relu",kernel_regularizer=l2(0.0003)),# Dropout(0.5),Dense(units=500,bias_initializer="one",activation="relu",kernel_regularizer=l2(0.0003)),Dense(units=100,bias_initializer="one",activation="relu",kernel_regularizer=l2(0.0003)),# Dropout(0.5),Dense(units=9,bias_initializer="one",activation="softmax",kernel_regularizer=l2(0.0003))
])# 定义优化器
sgd = SGD(lr=0.01)
# 编译模型,定义优化器,loss_function,训练过程计算准确率
model.compile(optimizer=sgd,loss="categorical_crossentropy",metrics=["accuracy"])# 训练数据集
history =model.fit(x_train,y_train,batch_size=32,epochs=200,validation_data=(x_test,y_test))
model.save("classmodel.h5")  # 会保存成HDF5的文件,pip install h5py
# 此种模型保存方式为保存模型的通用方式,既可以保存模型的结构,又可以保存模型的参数# 评估模型
loss,accuracy = model.evaluate(x_test, y_test)
print("test loss:",loss,"accuracy:",accuracy)history_dict = history.history
print(history_dict.keys())import matplotlib.pyplot as plt"""********************绘制训练损失与验证损失的训练结果********************"""# 纵坐标,所需绘制的数据
history_dict = history.history
loss_values = history_dict['loss']
val_loss_values = history_dict['val_loss']# 横坐标,步长
epochs = range(1, len(loss_values) + 1)# 绘制图像
plt.plot(epochs, loss_values, 'bo', label='Training loss')
plt.plot(epochs, val_loss_values, 'b', label='Validation loss')# 标题
plt.title('Training and validation loss')# 横、纵坐标标签
plt.xlabel('Epochs')
plt.ylabel('Loss')# 自适应标签的位置
plt.legend()# 显示图像
plt.show()"""********************绘制训练精度与验证精度的训练结果********************"""
# 清除图像
plt.clf()acc = history_dict['acc']
val_acc = history_dict['val_acc']plt.plot(epochs, val_acc, 'bo', label='Training acc')
plt.plot(epochs, acc, 'b', label='Validation acc')plt.title('Training and validation acc')plt.xlabel('Epochs')
plt.ylabel('Acc')plt.legend()plt.show()# 加载模型并检测
from keras.models import load_model
model = load_model('classmodel.h5')    # 需要安装keras==2.0.4版本
result=model.predict(x_test)
print(result)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/150286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unity 打包exe设置分辨率

unity在2019以上版本不支持在打开的时候弹出分辨率设置的窗口,但是因为有些需求需要可以设置分辨率进行操作,我在查了好多办法后找到了解决方案,废话不多说开始干货。 1.先去百度云上下载这个文件 链接:https://pan.baidu.com/s/1…

如果重复定义宏,两个值不同,最终的值是哪一个?

task F; define AA 5 //定义一个宏,先编译 print(AA); # 5; define AA 10 //重复定义宏,后编译 // 后面的值会覆盖前面定义的宏,但不是覆盖所有域,按照编译顺序,只覆盖该位置往后的域 print&…

LeetCode Hot100之十:239.滑动窗口最大值

题目 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 提示&#xff1a; 1 < nums.length < 10^5 -10^4 < nums[i…

BUG 随想录 - Java: 程序包 com.example.xxx 不存在

目录 一、BUG 复现 二、解决问题 一、BUG 复现 背景&#xff1a;通过 feign 的最佳实践&#xff0c;将 feign 单独提取成一个微服务&#xff0c;接着在需要远程调用的微服务中引入 feign 模块&#xff0c;并在启动类通过 EnableFeignClients 声明指定的 Feign 客户端. 出现问题…

LENOVO联想ThinkBook 16p G2 ACH(20YM)2022款锐龙版原厂Win11预装系统镜像

链接&#xff1a;https://pan.baidu.com/s/14AATH2NYsLwK9jMpej2BNw?pwd53sy 提取码&#xff1a;53sy 原装出厂W11系统自带网卡、显卡、声卡、蓝牙等所有驱动、出厂时状态主题壁纸、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;16G或以上的U盘 文件格…

el-dialog element-ui弹窗

bulkImport.vue 自定义组件 <template> <el-dialog :visible"modalVisible" title"批量导入" centered close"$emit(close)" :fullscreen"true"> <span>弹窗内容</span> <span slot"foot…

面试官:你能说说常见的前端加密方法吗?

给大家推荐一个实用面试题库 1、前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;web前端面试题库 前言 本篇文章略微介绍一下前端中常见的加密算法。前端中常见的加密算法主要形式包括——哈希函数&#xff0c;对称…

截取某个元素前面的数字

uniapp 截取某个元素前面的数字 var s150元/分钟var targetElement "元/分钟";var regex new RegExp("(\\d\\.\\d)"targetElement);var result s.match(regex);console.log(result);if (result && result.length > 1) {var number result[1…

十八数藏的文化新生:数字创新的非遗保护之光

在数字时代的大舞台上&#xff0c;十八数藏如一颗璀璨的文化新星&#xff0c;以数字创新的光芒点亮着非遗保护的未来。这不仅仅是一次文化的复兴&#xff0c;更是对传统之美的数字赋能&#xff0c;让非遗在新的时代焕发出勃勃生机。 十八数藏通过数字化手段&#xff0c;使得传统…

AppLink定时调度操作

RestCloud AppLink定时调度操作 定时调度可以让我们更加快速了解到数据的变动以作出更好的决策&#xff0c;接下来通过AppLink平台配置定时调度的操作。 1.登录RestCloud AppLink 2.点击授权管理 3.点击应用认证菜单 4.新建拼多多授权认证 基础定时调度配置 1.拉取一个定时器…

Linux CentOS7 添加网卡

一台主机中安装多块网卡&#xff0c;有许多优势。可以实现多项功能。 为了学习网卡参数的设置&#xff0c;可以为主机添加多块网卡。与添加磁盘一样&#xff0c;要在VMware中设置。利用图形化方式或命令行查看或设置网卡。本文仅初步讨论添加、查看与删除网卡&#xff0c;有关…

读书笔记:Effective C++ 3.0版2005年Scott Meyers : 55条建议(47-55)

条款47 &#xff1a;请使用traits classes表现类型信息(Use traits classes for information about types) (1).Traits classes使得”类型相关信息”在编译期可用。它们以templates和”templates特化”完成实现。 (2).整合重载技术(overloading)后&#xff0c;traits classes有…

Go——一、Go语言安装及介绍

Go 一、Windows下安装Go1、下载Go2、配置环境变量3、下载Jetbrain下的GoLang4、编写hello world5、编译和执行 二、Go语言介绍1、开发文档2、Go语言核心开发团队3、为什么要创建Go4、Go语言发展史5、Go语言特点6、Golang执行过程6.1 执行过程分析6.2 编译是什么 7、开发注意事项…

海外IP代理如何助力跨境电商?

黑五作为下半年年度尤为重要的一个节日&#xff0c;是各大商家的必争之地&#xff0c;那么海外代理是如何帮助跨境商家做好店铺管理和营销呢&#xff1f; 为什么跨境人都关注海外代理&#xff0c;下面我们来进行介绍。 一、什么是海外代理 海外代理就是我们所说的&#xff1a…

【喵叔闲扯】--迪米特法则

迪米特法则&#xff0c;也称为最少知识原则&#xff08;Law of Demeter&#xff09;&#xff0c;是面向对象设计中的一个原则&#xff0c;旨在降低对象之间的耦合性&#xff0c;提高系统的可维护性和可扩展性。该原则强调一个类不应该直接与其它不相关的类相互交互&#xff0c;…

【数据结构】前言

数据结构是在计算机中维护数据的方式。 数据结构是OI重要的一部分。 同的数据结构各有优劣&#xff0c;能够处理的问题各不相同&#xff0c;而根据具体问题选取合适的数据结构&#xff0c;可以大大提升程序的效率。 所以&#xff0c;学习各种各样的数据结构是很有必要的。 数据…

kernel32.dll丢失都有什么解决办法,帮助大家解决kernel32.dll丢失的问题

kernel32.dll丢失是电脑中常出现的情况&#xff0c;今天就想和大脚聊聊这个kernel32.dll 文件&#xff0c;这个文件它的功能是干什么的&#xff0c;如果电脑中kernel32.dll 丢失都有什么解决办法&#xff0c;帮助大家解决kernel32.dll丢失的问题&#xff0c;本篇文章给大家提供…

Java的继承

继承(Inheritance) 【1】类是对对象的抽象&#xff1a; 举例&#xff1a; 荣耀20 &#xff0c;小米 红米3&#xff0c;华为 p40 pro ---> 类&#xff1a;手机类 【2】继承是对类的抽象&#xff1a; 举例&#xff1a; 学生类&#xff1a;Student&#xff1a; 属性&…

汽车CAN/ CAN FD数据记录仪在上汽大通诊断测试部门的应用

CAN/CANFD数据诊断记录仪在 规格&#xff1a;数据记录诊断仪 功能&#xff1a;CAN(FD)数据记录 UDS诊断 WIFI收发报文

Matlab绘制双坐标轴图示例函数yyaxis

一、前言 出于一些需求&#xff0c;我们需要将两个不同属性的参量绘制在同一张图上&#xff0c;但是两个参量属性不同&#xff0c;即单位不同&#xff0c;纵坐标值分布范围不同&#xff0c;此刻&#xff0c;我们只需要将一个参量的值在y轴左侧展示&#xff0c;另一个参量的值在…