【笔记】机器学习 - 李宏毅 - 9 - Keras Demo
3.1 configuration
3.2 寻找最优网络参数
代码示例:
# 1.Step 1
model = Sequential()
model.add(Dense(input_dim=28*28, output_dim=500)) # Dense是全连接
model.add(Activation('sigmoid'))
model.add(Dense(output_dim=500))
model.add(Activation('sigmoid'))
model.add(Dense(output_dim=10))
model.add(Activation('softmax'))
# Step 2
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# Step 3
model.fit(x_train, y_train, batch_size=100, nb_epoch=20)
# 模型保存
#case1:测试集正确率
score = model.evaluate(x_test,y_test)
print("Total loss on Testing Set:", score[0])
print("Accuracy of Testing Set:", score[1])
#case2:模型预测
result = model.predict(x_test)
Keras 2.0 代码类似
# 创建网络
model=Sequential()
model.add(Dense(input_dim=28*28,units=500,activation='relu'))
model.add(Dense(units=500,activation='relu'))
model.add(Dense(units=10,activation='softmax'))
# 配置
model.compile(loss='categorical crossentropy',optimizer='adam',metrics=['accuracy'])
# 选择最好的方程
model.fit(x_train,y_train,batch_size=100,epochs=20)
# 使用模型
score = model.evaluate(x_test,y_test)
print('Total loss on Testiong Set : ',score[0])
print('Accuracy of Testiong Set : ',score[1])
# 上线后预测
result = model.predict(x_test)
x_train, y_train解释

小批量梯度下降,速度更快的原因是因为可以并行计算。


完整的Keras演示:
import numpy as np
from keras.models import Sequential
from keras.layers.core import Dense,Dropout,Activation
from keras.optimizers import SGD,Adam
from keras.utils import np_utils
from keras.datasets import mnist
def load_data():
(x_train,y_train),(x_test,y_test)=mnist.load_data()
number=10000
x_train=x_train[0:number]
y_train=y_train[0:number]
x_train=x_train.reshape(number,28*28)
x_test=x_test.reshape(x_test.shape[0],28*28)
x_train=x_train.astype('float32')
x_test=x_test.astype('float32')
y_train=np_utils.to_categorical(y_train,10)
y_test=np_utils.to_categorical(y_test,10)
x_train=x_train
x_test=x_test
x_train=x_train/255
x_test=x_test/255
return (x_train,y_train),(x_test,y_test)
(x_train,y_train),(x_test,y_test)=load_data()
model=Sequential()
model.add(Dense(input_dim=28*28,units=633,activation='sigmoid'))
model.add(Dense(units=633,activation='sigmoid'))
model.add(Dense(units=633,activation='sigmoid'))
model.add(Dense(units=10,activation='softmax'))
model.compile(loss='mse',optimizer=SGD(lr=0.1),metrics=['accuracy'])
model.fit(x_train,y_train,batch_size=100,epochs=20)
result= model.evaluate(x_test,y_test)
print('TEST ACC:',result[1])
运行结果:
Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz
11493376/11490434 [==============================] - 21s 2us/step
Epoch 1/20
10000/10000 [==============================] - 3s 342us/step - loss: 0.0905 - acc: 0.1042
Epoch 2/20
10000/10000 [==============================] - 3s 292us/step - loss: 0.0900 - acc: 0.1043
Epoch 3/20
10000/10000 [==============================] - 3s 278us/step - loss: 0.0900 - acc: 0.1096
Epoch 4/20
10000/10000 [==============================] - 3s 284us/step - loss: 0.0900 - acc: 0.1133
Epoch 5/20
10000/10000 [==============================] - 3s 290us/step - loss: 0.0900 - acc: 0.1105
Epoch 6/20
10000/10000 [==============================] - 3s 286us/step - loss: 0.0900 - acc: 0.1120
Epoch 7/20
10000/10000 [==============================] - 3s 316us/step - loss: 0.0900 - acc: 0.1098
Epoch 8/20
10000/10000 [==============================] - 3s 306us/step - loss: 0.0900 - acc: 0.1117
Epoch 9/20
10000/10000 [==============================] - 3s 294us/step - loss: 0.0900 - acc: 0.1102
Epoch 10/20
10000/10000 [==============================] - 3s 296us/step - loss: 0.0899 - acc: 0.1129
Epoch 11/20
10000/10000 [==============================] - 3s 334us/step - loss: 0.0899 - acc: 0.1153
Epoch 12/20
10000/10000 [==============================] - 3s 307us/step - loss: 0.0899 - acc: 0.1141
Epoch 13/20
10000/10000 [==============================] - 4s 351us/step - loss: 0.0899 - acc: 0.1137 0s - loss: 0.089
Epoch 14/20
10000/10000 [==============================] - 3s 321us/step - loss: 0.0899 - acc: 0.1157
Epoch 15/20
10000/10000 [==============================] - 3s 302us/step - loss: 0.0899 - acc: 0.1156
Epoch 16/20
10000/10000 [==============================] - 3s 323us/step - loss: 0.0899 - acc: 0.1159 1s -
Epoch 17/20
10000/10000 [==============================] - 3s 331us/step - loss: 0.0899 - acc: 0.1141
Epoch 18/20
10000/10000 [==============================] - 3s 299us/step - loss: 0.0899 - acc: 0.1234
Epoch 19/20
10000/10000 [==============================] - 3s 316us/step - loss: 0.0899 - acc: 0.1143
Epoch 20/20
10000/10000 [==============================] - 3s 337us/step - loss: 0.0899 - acc: 0.1236
10000/10000 [==============================] - 2s 246us/step
TEST ACC: 0.1028
可以调一下units的参数值,可以再多加几层,尝试一下效果并不是很好,之后章节会对这个代码进行优化。
【笔记】机器学习 - 李宏毅 - 9 - Keras Demo的更多相关文章
- 【笔记】机器学习 - 李宏毅 - 11 - Keras Demo2 & Fizz Buzz
1. Keras Demo2 前节的Keras Demo代码: import numpy as np from keras.models import Sequential from keras.la ...
- 【笔记】机器学习 - 李宏毅 - 2 - Regression + Demo
Regression 回归 应用领域包括:Stock Market Forecast, Self-driving car, Recommondation,... Step 1: Model 对于宝可梦 ...
- 100天搞定机器学习|day40-42 Tensorflow Keras识别猫狗
100天搞定机器学习|1-38天 100天搞定机器学习|day39 Tensorflow Keras手写数字识别 前文我们用keras的Sequential 模型实现mnist手写数字识别,准确率0. ...
- Python机器学习笔记:深入理解Keras中序贯模型和函数模型
先从sklearn说起吧,如果学习了sklearn的话,那么学习Keras相对来说比较容易.为什么这样说呢? 我们首先比较一下sklearn的机器学习大致使用流程和Keras的大致使用流程: skl ...
- Python机器学习笔记:深入学习Keras中Sequential模型及方法
Sequential 序贯模型 序贯模型是函数式模型的简略版,为最简单的线性.从头到尾的结构顺序,不分叉,是多个网络层的线性堆叠. Keras实现了很多层,包括core核心层,Convolution卷 ...
- 机器学习笔记P1(李宏毅2019)
该博客将介绍机器学习课程by李宏毅的前两个章节:概述和回归. 视屏链接1-Introduction 视屏链接2-Regression 该课程将要介绍的内容如下所示: 从最左上角开始看: Regress ...
- 【笔记】机器学习 - 李宏毅 - 12 - CNN
Convolutional Neural Network CNN 卷积神经网络 1. 为什么要用CNN? CNN一般都是用来做图像识别的,当然其他的神经网络也可以做,也就是输入一张图的像素数组(pix ...
- 【笔记】机器学习 - 李宏毅 - 10 - Tips for Training DNN
神经网络的表现 在Training Set上表现不好 ----> 可能陷入局部最优 在Testing Set上表现不好 -----> Overfitting 过拟合 虽然在机器学习中,很容 ...
- 【笔记】机器学习 - 李宏毅 - 5 - Classification
Classification: Probabilistic Generative Model 分类:概率生成模型 如果说对于分类问题用回归的方法硬解,也就是说,将其连续化.比如 \(Class 1\) ...
随机推荐
- Go语言实现:【剑指offer】按之字形打印二叉树
该题目来源于牛客网<剑指offer>专题. 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. ...
- Scala 学习(10)之「集合 」
数组 定长数组 Array:采用()访问,而不是[],下标从 0 开始. val array1 = new Array[String](5) //创建数组 println(array1) //返回数组 ...
- 手写Tomcat
学习JavaWeb之后,只知道如何部署项目到Tomcat中,而并不了解其内部如何运行,底层原理为何,因此写下此篇博客初步探究一下.学习之前需要知识铺垫已列出:Tomcat目录结构.HTTP协议.IO. ...
- post 两种方式 application/x-www-form-urlencoded和multipart/form-data
本次主要涉及 application/x-www-form-urlencoded方式. postman访问方式如图: java代码实现: 首先使用maven作为第三方依赖管理: <depende ...
- git知识简单小结
git特点: 1)分布式 2)存储快照而非差异 3)本地有完全的版本库,几乎所有操作都在本地 4)有内在的一致性,SHA1 5)优秀的分支管理 6)支持各种协同模式 7)开源,有一些第三方软件可整合使 ...
- Leetcode:110. 平衡二叉树
Leetcode:110. 平衡二叉树 Leetcode:110. 平衡二叉树 点链接就能看到原题啦~ 关于AVL的判断函数写法,请跳转:平衡二叉树的判断 废话不说直接上代码吧~主要的解析的都在上面的 ...
- 分享8个laravel模型时间戳使用技巧
默认情况下,Laravel Eloquent 模型默认数据表有 created_at 和 updated_at 两个字段.当 然,我们可以做很多自定义配置,实现很多有趣的功能.下面举例说明. 1. 禁 ...
- Python3标准库:pprint美观打印数据结构
1. pprint美观打印数据结构 pprint模块包含一个“美观打印机”,用于生成数据结构的一个美观的视图.格式化工具会生成数据结构的一些表示,不仅能够由解释器正确地解析,还便于人阅读.输出会尽可能 ...
- CSS中元素的显示模式
在CSS中,根据元素显示模式的不同元素标签被分为了两类:行内元素(inline-level).块级元素(block-level). 1,首先介绍什么是行内元素,什么又是块级元素? 1.1,行内元素就 ...
- You (oracle) are not allowed to use this program (crontab)
检查一台ORACLE数据库服务器的crontab作业(用户为oracle,实际环境中可能为oracle.也有可能是其它用户)时,发现出现下面提示信息: $ crontab -l You (orac ...