【笔记】机器学习 - 李宏毅 - 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\) ...
随机推荐
- javaIO笔记
原创 File类 实例化 new File(path); File.separator 分隔符 创建文件的常规做法
- 如何准备Java面试?如何把面试官的提问引导到自己准备好的范围内?
Java能力和面试能力,这是两个方面的技能,可以这样说,如果不准备,一些大神或许也能通过面试,但能力和工资有可能被低估.再仔细分析下原因,面试中问的问题,虽然在职位介绍里已经给出了范围,但针对每个点, ...
- [JavaScript]AO对象
1, 形式参数 2, 局部变量 3, 函数声明表达式
- 题解 USACO12DEC【逃跑的BarnRunning Away From…】
期末考前写题解,\(rp++! \ rp++! \ rp++!\) \[ description \] 给出一个以 \(1\) 为根的边带权有根树,给定一个参数 \(L\) ,问每个点的子树中与它距离 ...
- 多用as少用强制类型转换
在 C# 中存在一个名叫静态类型检查的机制,这个机制可以让编译器帮助我们把类型不服的用法找出来,从而使得应用程序在运行期间加少一些类型检查的操作.但是有时候我们还是需要进行运行期类型检查,比如我们在设 ...
- lua学习之复习汇总篇
第六日笔记 1. 基础概念 程序块 定义 在 lua 中任何一个源代码文件或在交互模式中输入的一行代码 程序块可以是任意大小的 程序块可以是一连串语句或一条命令 也可由函数定义构成,一般将函数定义写在 ...
- CyclicBarrier与CountDownLatch区别
阻塞与唤醒方式的区别 CountDownLatch计数方式 CountDownLatch是减计数.调用await()后线程阻塞.调用countDown()方法后计数减一,当计数为零时,调用await( ...
- [redis读书笔记] 第一部分 数据结构与对象 整数集合
typedef struct intset { // 编码方式 uint32_t encoding; // 集合包含的元素数量 uint32_t length; // 保存元素的数组 int8_t c ...
- XLNet:运行机制及和Bert的异同比较
这两天,XLNet貌似也引起了NLP圈的极大关注,从实验数据看,在某些场景下,确实XLNet相对Bert有很大幅度的提升.就像我们之前说的,感觉Bert打开两阶段模式的魔法盒开关后,在这条路上,会有越 ...
- ibtmp1文件过大
有个数据库发现磁盘告警 已经100% 经过排查发现数据库的data目录下有个 ibtmp1是个什么东西呢?查看官方文档后发现 The temporary tablespace is a tablesp ...