利用keras搭建基础模型莺尾花
最近自学了一下,感觉keras貌似挺好用的,这里记录一下学习过程,并且给出源代码。
详细思路我都有写出注释。
练手之作,诸多不足,欢迎讨论。
第一步:建立模型
Keras有两种类型的模型,序列模型和函数式模型。
这里我使用的是序列模型,采用的方式为.add()的方法,一层一层构建。
#define a network
def baseline_model():model = Sequential() #是顺序的model.add(Dense(7, input_dim=4 , activation='tanh')) #输入层有7个节点,model.add(Dense(3, activation='softmax')) #输出层model.compile(loss='mean_squared_error', optimizer='sgd', metrics=['accuracy']) #均方误差 优化器 判别return model
这里需要注意的是,模型需要知道数据的输入shape,只有第一层需要指定shape参数,后面的层数是可以自动推导。
在训练之前,对学习过程进行配置的函数为compile(),其中三个参数分别为:优化器optimizer,损失函数loss, 判别函数metrics。
第二步:训练
这里注意,我使用了kfold
estimator = KerasClassifier(build_fn=baseline_model, epochs = 20, batch_size= 1, verbose=1)
- batch_size:整数,指定进行梯度下降时每个batch包含的样本数。
- epochs:整数,训练终止时的epochs数
- verbose:日志显示,0为不输出,1为输出进度条记录,2为每个epoch输出一条记录
第三步:保存模型和输出相关的性能参数
这一步描述的具体的训练结束–>保存模型---->调用模型---->输出key值,一套完整的流程。
简单来说,作为一个基础的keras算法框架就出来了。
后续我也会在上面进行各种拓展。
第四部
输出结果:
以第一行为例:[0.8176036 0.1570888 0.02530759],我们把数据一共分为了3类,setosa,versicolor,virginica。
这一行的三个数据,就表示这三种类别的可能性,0.817的可能性是第一个种类,。
最后的结果。
细节请看全部代码
全部代码:
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
from keras.models import Sequential #序列 串行
from keras.layers import Dense #
from keras.wrappers.scikit_learn import KerasClassifier
from keras.utils import np_utils
from sklearn.model_selection import cross_val_score #引入交叉验证
from sklearn.model_selection import KFold #测试集和验证集
from sklearn.preprocessing import LabelEncoder #把文本转化为数值
from keras.models import model_from_json #把模型存为json,需要的时候再读出来,直接预测。
from keras.optimizers import SGD# reproducibility 重现
seed = 13
np.random.seed(seed) #打乱顺序,降低拟合#load data 导入数据
df = pd.read_csv('iris.csv') #文件在哪呢
X = df.values[:,0:4].astype(float)
Y = df.values[:,4]encoder = LabelEncoder()
Y_encoded = encoder.fit_transform(Y) #将3个字母转化为 0 0 1 之类的。
Y_onehot = np_utils.to_categorical(Y_encoded) #这两个要联合起来使用,使用的效果是把字符转化为数字,然后把数字转化为矩阵,'''
##
具体效果,关于LabEncoder 和to_categoricalfrom keras.utils.np_utils import *
#类别向量定义
b = [0,1,2,3,4,5,6,7,8]
#调用to_categorical将b按照9个类别来进行转换
b = to_categorical(b, 9)
print(b)执行结果如下:
[[1. 0. 0. 0. 0. 0. 0. 0. 0.][0. 1. 0. 0. 0. 0. 0. 0. 0.][0. 0. 1. 0. 0. 0. 0. 0. 0.][0. 0. 0. 1. 0. 0. 0. 0. 0.][0. 0. 0. 0. 1. 0. 0. 0. 0.][0. 0. 0. 0. 0. 1. 0. 0. 0.][0. 0. 0. 0. 0. 0. 1. 0. 0.][0. 0. 0. 0. 0. 0. 0. 1. 0.][0. 0. 0. 0. 0. 0. 0. 0. 1.]]'''sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
#define a network
def baseline_model():model = Sequential() #是顺序的model.add(Dense(7, input_dim=4 , activation='tanh')) #输入层有7个节点,model.add(Dense(3, activation='softmax')) #输出层model.compile(loss='mean_squared_error', optimizer='sgd', metrics=['accuracy']) #均方误差 优化器 判别return modelestimator = KerasClassifier(build_fn=baseline_model, epochs = 20, batch_size= 1, verbose=1)#evalute
kfold = KFold(n_splits=10,shuffle=True,random_state=seed) #随机发生器的种子result = cross_val_score(estimator, X,Y_onehot,cv=kfold)print('Accuray of cross validation, mean %.2f, std %.2f'% (result.mean(),result.std()))#save model
estimator.fit(X, Y_onehot)
model_json = estimator.model.to_json()
with open('model.json','w') as json_file:json_file.write(model_json)estimator.model.save_weights('model.h5')
print('saved model to disk')#load model and use it for prediction
json_file = open('model.json','r')
loaded_model_json = json_file.read()
json_file.close()loaded_model = model_from_json(loaded_model_json) #知道网络结构,
loaded_model.load_weights('model.h5') #知道每一层的参数和具体结构
print('loaded model from disk')predicted = loaded_model.predict(X)
print('predicted probability:'+ str(predicted))predicted_label = loaded_model.predict_classes()
print('predicted label:'+ str(predicted_label))
利用keras搭建基础模型莺尾花相关推荐
- 利用keras搭建CNN完成图片分类
文章目录 一.简介 二.流程 1.数据处理 2.神经网络搭建 3.训练 4.预测 三.参考 一.简介 本文旨在通过一些简单的案例,学习如何通过keras搭建CNN.从数据读取,数据处理,神经网络搭建, ...
- 利用keras搭建神经网络拟合非线性函数
神经网络有着一个非常奇妙的结构,它的数学原理虽然相对简单,但是能做的事情却不少,数学家已经证明,具有2层(输入层除外)和非线性激活函数的神经网络,只要在这些层中有足够多的神经元,就可以近似任何函数(严 ...
- 基于Keras的生成对抗网络(1)——利用Keras搭建简单GAN生成手写体数字
目录 0.前言 一.GAN结构 二.函数代码 2.1 生成器Generator 2.2 判别器Discriminator 2.3 train函数 三.结果演示 四.完整代码 五.常见问题汇总 0.前言 ...
- 利用keras搭建AlexNet神经网络识别kaggle猫狗图片
AlexNet结构 keras代码 from PIL import Image import numpy as np from keras.utils import to_categoricalpat ...
- 深度学习系列笔记——贰 (基于Tensorflow2 Keras搭建的猫狗大战模型 三)
深度学习系列笔记--贰 (基于Tensorflow Keras搭建的猫狗大战模型 一) 深度学习系列笔记--贰 (基于Tensorflow Keras搭建的猫狗大战模型 二) 前面两篇博文已经介绍了如 ...
- 深度学习系列笔记——贰 (基于Tensorflow Keras搭建的猫狗大战模型 一)
猫狗大战是著名的竞赛网站kaggle几年前的一个比赛,参赛者得到猫狗各12500张图片,作为训练集,另外还会得到12500张猫和狗的图片,作为验证.最后提交结果至kaggle平台,获得评测分数. 本篇 ...
- keras入门(三)搭建CNN模型破解网站验证码
项目介绍 在文章CNN大战验证码中,我们利用TensorFlow搭建了简单的CNN模型来破解某个网站的验证码.验证码如下: 在本文中,我们将会用Keras来搭建一个稍微复杂的CNN模型来破解以上的 ...
- keras实现cnn模型代码
利用keras 实现cnn模型,关键在于: (1)原始数据的处理.(可输入的格式) (2)卷积层.池化层.全连接层的搭建 (3)各层对输入数据的size变化. 1.库的导入 np_utils库中的功能 ...
- 吴恩达DeepLearning第四部分作业week2 基于keras搭建CNNResnet50
今天终于体会到了好电脑有多爽了,我看别人博客说这次作业的运算量比较大,我就放弃了用自己这台烂电脑的打算,改用实验室的电脑. 首先使用keras搭建一个CNN,熟悉下keras.感觉就是tensorfl ...
最新文章
- 牛年前的一小结——打响本命年的第一枪,继续刷题!
- 云服务器现安全漏洞及防护措施
- 计算python执行时间
- python爬取基金历史净值_Python爬取天天基金网历史净值数据
- 罗斯文2007(Northwind 2007)数据库、Access 2007 样列数据库分析[转]
- React Native的键盘遮挡问题(input/webview里)
- ubuntu11.10乱码解决
- java.security.jar 下载_springsecurity下载-Spring Security jar包下载 v4.2.2官方完整版--pc6下载站...
- 通达信l2高级行情服务器地址配置文件,疯赢版通达信更好用——开通level2行情,添加龙虎榜数据...
- 柯西过程(Cauchy process)
- mmdetection config文件中几个参数的理解(anchor_scales,anchor_ratios,anchor_strides)
- 社交+小游戏方案来袭,全方位提升社交APP的活跃留存
- 【ParaView教程】第四章 常见问题 —— 怎样用ParaView导入Star CCM+的结果?
- BP算法推导(python实现)
- 地理坐标的六边形编码(PHXIS)
- Leetcode初级算法
- android 开放聊天室
- C/C++快速入门图形化教学法简介(目录)
- universal bios_技嘉开始为400系主板提供BIOS更新
- hdu 3234 并查集