最近自学了一下,感觉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搭建基础模型莺尾花相关推荐

  1. 利用keras搭建CNN完成图片分类

    文章目录 一.简介 二.流程 1.数据处理 2.神经网络搭建 3.训练 4.预测 三.参考 一.简介 本文旨在通过一些简单的案例,学习如何通过keras搭建CNN.从数据读取,数据处理,神经网络搭建, ...

  2. 利用keras搭建神经网络拟合非线性函数

    神经网络有着一个非常奇妙的结构,它的数学原理虽然相对简单,但是能做的事情却不少,数学家已经证明,具有2层(输入层除外)和非线性激活函数的神经网络,只要在这些层中有足够多的神经元,就可以近似任何函数(严 ...

  3. 基于Keras的生成对抗网络(1)——利用Keras搭建简单GAN生成手写体数字

    目录 0.前言 一.GAN结构 二.函数代码 2.1 生成器Generator 2.2 判别器Discriminator 2.3 train函数 三.结果演示 四.完整代码 五.常见问题汇总 0.前言 ...

  4. 利用keras搭建AlexNet神经网络识别kaggle猫狗图片

    AlexNet结构 keras代码 from PIL import Image import numpy as np from keras.utils import to_categoricalpat ...

  5. 深度学习系列笔记——贰 (基于Tensorflow2 Keras搭建的猫狗大战模型 三)

    深度学习系列笔记--贰 (基于Tensorflow Keras搭建的猫狗大战模型 一) 深度学习系列笔记--贰 (基于Tensorflow Keras搭建的猫狗大战模型 二) 前面两篇博文已经介绍了如 ...

  6. 深度学习系列笔记——贰 (基于Tensorflow Keras搭建的猫狗大战模型 一)

    猫狗大战是著名的竞赛网站kaggle几年前的一个比赛,参赛者得到猫狗各12500张图片,作为训练集,另外还会得到12500张猫和狗的图片,作为验证.最后提交结果至kaggle平台,获得评测分数. 本篇 ...

  7. keras入门(三)搭建CNN模型破解网站验证码

    项目介绍   在文章CNN大战验证码中,我们利用TensorFlow搭建了简单的CNN模型来破解某个网站的验证码.验证码如下: 在本文中,我们将会用Keras来搭建一个稍微复杂的CNN模型来破解以上的 ...

  8. keras实现cnn模型代码

    利用keras 实现cnn模型,关键在于: (1)原始数据的处理.(可输入的格式) (2)卷积层.池化层.全连接层的搭建 (3)各层对输入数据的size变化. 1.库的导入 np_utils库中的功能 ...

  9. 吴恩达DeepLearning第四部分作业week2 基于keras搭建CNNResnet50

    今天终于体会到了好电脑有多爽了,我看别人博客说这次作业的运算量比较大,我就放弃了用自己这台烂电脑的打算,改用实验室的电脑. 首先使用keras搭建一个CNN,熟悉下keras.感觉就是tensorfl ...

最新文章

  1. 牛年前的一小结——打响本命年的第一枪,继续刷题!
  2. 云服务器现安全漏洞及防护措施
  3. 计算python执行时间
  4. python爬取基金历史净值_Python爬取天天基金网历史净值数据
  5. 罗斯文2007(Northwind 2007)数据库、Access 2007 样列数据库分析[转]
  6. React Native的键盘遮挡问题(input/webview里)
  7. ubuntu11.10乱码解决
  8. java.security.jar 下载_springsecurity下载-Spring Security jar包下载 v4.2.2官方完整版--pc6下载站...
  9. 通达信l2高级行情服务器地址配置文件,疯赢版通达信更好用——开通level2行情,添加龙虎榜数据...
  10. 柯西过程(Cauchy process)
  11. mmdetection config文件中几个参数的理解(anchor_scales,anchor_ratios,anchor_strides)
  12. 社交+小游戏方案来袭,全方位提升社交APP的活跃留存
  13. 【ParaView教程】第四章 常见问题 —— 怎样用ParaView导入Star CCM+的结果?
  14. BP算法推导(python实现)
  15. 地理坐标的六边形编码(PHXIS)
  16. Leetcode初级算法
  17. android 开放聊天室
  18. C/C++快速入门图形化教学法简介(目录)
  19. universal bios_技嘉开始为400系主板提供BIOS更新
  20. hdu 3234 并查集

热门文章

  1. 文旅灯光秀互动应用有什么优势
  2. 对Max Pooling的理解
  3. 互联网巨头追捧的“中台”战略,有多重要?
  4. Python获取列表list中的非零数据、第一个非零元素、最后一个非零元素
  5. 记录docker修改mysql映射端口
  6. MySql无法连接本地地址localhost
  7. sqlserver无法连接的localhost解决方案
  8. 7_文件系统与磁盘分区
  9. Android翻转动画(卡片翻转效果)
  10. 简单货机装运模型lingo求解