"""
1、30s上手keras
"""
#keras的核心数据结构是“模型”,模型是一种组织网络层的方式,keras 的主要模型是Sequential模型,Sequential是一系列网络层按顺序构成的栈
from keras.models import Sequential
model=Sequential()
###将一些网络层通过.add()叠加起来,就构成了一个模型
from keras.layers import Dense,Activation
model.add(Dense(units=64,input_dim=100))
model.add(Activation('relu'))
model.add(Dense(units=10))
model.add(Activation('softmax'))
###完成模型的搭建以后,我们需要使用.compile()方法编译
model.compile(loss='categorical_crossentropy',optimizer=SGD(lr=0.01,momentum=0.9,nesterov=True))
## 完成编译以后,在训练数据上按照batch进行一定次数的迭代来训练网络
model.fit(x_train,y_train,epochs=5,batch_size=32)
## 当然,我们也可以手动的把一个个batch送到网络中去训练
model.train_on_batch(x_batch,y_batch)
####可以使用一行代码来对模型进行评估,看看模型的指标是否满足我们的要求
loss_and_metrics=model.evaluate(x_test,y_test,batch_size=128)
###或者可以使用模型对新的数据进行预测
classes=model.predict(x_test,batch_size=128)
#搭建一个问答系统、图像分类模型,或神经图灵机、word2vec词嵌入器就是这么快。支撑深度学习的基本想法本就是简单的
####2、快速开始Sequential模型
###Sequential模型是多个网络层的线性堆叠,也就是“一条路走到黑”
###可以通过向Sequential模型传递一个layer的list来构建模型
from keras.models import Sequential
from keras.layers import Dense,Activation
model=Sequential([Dense(32,units=784),Activation('relu'),Dense(10),Activation('softmax')])
###也可以通过add方式, ###指定输入数据的shape
###模型需要知道输入数据的shape,因此Sequential的第一层需要接受一个关于输入数据shape的参数,后面的每一层都可以自动的推导出中间的shape
###因此不需要为每层都指定这个参数
###(1)、传递一个 input_shape的关键字参数给第一层,input_shape是一个tuple类型的数据,其实也可以填入None,填入None表示此位置是任何正整数
###(2)、有些2D层,如Dense,支持通过指定其输入维度input_dim来隐含的输入数据shape,一些3D的时域层支持参数input_dim和input_length来指定shape
###(3)、如果你需要为输入指定一个固定大小的batch_size(常用于stateful RNN网络),可以传递batch_size参数到一个层中,例如你想输入张量的batch
###大小是32,数据的shape是(6,8),那么你需要传递batch_size=32和input_dim=(6,8)
#编译  在训练模型之前,需要通过compile来对学习过程进行配置,接受三个参数
##(1)、优化器optimizier:该参数可以指定为预定义的优化器,如rmsprop、adagrad
##(2)、损失函数loss:该参数为模型是他最小化目标函数,可以为预定义的损失函数名,如categorical——crossentropy、mse
###(3)、指标列表 对于分类问题,我们一般将该列表设置为metrics=[‘accuracy’]。
model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy']) import keras.backend as K
def mean_pred(y_true,y_pred):
return K.mean(y_pred)
model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy',mean_pred])
##训练 keras以Numpy数组作为输入数据和标签的数据类型,训练模型一般使用fit函数。
###example1-基于多层感知器的softmax分类器
from keras.models import Sequential
from keras.layers import Dense,Dropout,Activation
from keras.optimizers import SGD
import numpy as np
import keras
##generate dummy data
x_train=np.random.random((1000,20))
y_train=keras.utils.to_categorical(np.random.randint(10,size=(1000,1)),num_classes=10)
x_test=np.random.random((100,20))
y_test=keras.utils.to_categorical(np.random.randint(10,size=(100,1)),num_classes=10) ##build model
model=Sequential()
# Dense(64) is a fully-connected layer with 64 hidden units.
# in the first layer, you must specify the expected input data shape:
# here, 20-dimensional vectors.
model.add(Dense(64,activation='relu',input_dim=20))
model.add(Dropout(0.5))
model.add(Dense(64,activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10,activation='softmax')) sgd=SGD(lr=0.01,decay=1e-6,momentum=0.9,nesterov=True)
model.compile(loss='categorical_crossentropy',optimizer=sgd,metrics=['accuracy'])
model.fit(x_train,y_train,epochs=20,batch_size=128)
score=model.evaluate(x_test,y_test,batch_size=128)
print(score)
###例子2  MLP的二分类
import numpy as np
from keras.models import Sequential
from keras.layers import Dense,Dropout
x_train=np.random.random((1000,20))
y_train=np.random.randint(2,size=(1000,1))
x_test=np.random.random((100,20))
y_test=np.random.randint(2,size=(100,1)) model=Sequential()
model.add(Dense(64,input_dim=20,activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64,activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1,activation='sigmoid')) model.compile(loss='binary_crossentropy',optimizer='rmsprop',metrics=['accuracy'])
model.fit(x_train,y_train,epochs=20,batch_size=128)
model.evaluate(x_test,y_test,batch_size=128)

Keras学习笔记1--基本入门的更多相关文章

  1. Hadoop学习笔记(1) ——菜鸟入门

    Hadoop学习笔记(1) ——菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序. ...

  2. iOS学习笔记-地图MapKit入门

    代码地址如下:http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错漏 ...

  3. 官网实例详解-目录和实例简介-keras学习笔记四

    官网实例详解-目录和实例简介-keras学习笔记四 2018-06-11 10:36:18 wyx100 阅读数 4193更多 分类专栏: 人工智能 python 深度学习 keras   版权声明: ...

  4. tensorflow学习笔记二:入门基础 好教程 可用

    http://www.cnblogs.com/denny402/p/5852083.html tensorflow学习笔记二:入门基础   TensorFlow用张量这种数据结构来表示所有的数据.用一 ...

  5. Keras学习笔记——Hello Keras

    最近几年,随着AlphaGo的崛起,深度学习开始出现在各个领域,比如无人车.图像识别.物体检测.推荐系统.语音识别.聊天问答等等.因此具备深度学习的知识并能应用实践,已经成为很多开发者包括博主本人的下 ...

  6. spark学习笔记总结-spark入门资料精化

    Spark学习笔记 Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用. ...

  7. MyBatis学习笔记(一)入门

    首先给大家推荐几个网页: http://blog.csdn.net/isea533/article/category/2092001    没事看看 - MyBatis工具:www.mybatis.t ...

  8. 【NodeJS 学习笔记02】入门资源很重要

    前言 在我映像中,异步最早出现与ajax,当时我还在搞.net,然后.net居然出了一个异步的控件...... 虽然我最后知道了他不是异步的......然后,前端异步用得特别多,如果不是异步的程序,你 ...

  9. SQL学习笔记——SQL初入门,Ubuntu下MySQL的安装

          刚开始接触sql,于是准备在Ubuntu下学习sql,就跟着itercast的sql教程开始入门了. 下面只是我个人的记录,高手请绕道: 一. 在安装之前,我们可以用下面这个命令通过开放端 ...

随机推荐

  1. 【每日scrum】NO.9

    (1)这是我们冲刺的最后一天,晚上我们的团队进行了收尾工作:第一阶段的任务基本完成,软件主要实现了校园景点照片以及对应的介绍,查询最短路径,查询涉及相关景点的查询,查询全部路径,基本界面的设计,导航功 ...

  2. 项目Beta冲刺(团队)第一天

    1.今天解决的进度 成员 进度 陈家权 回复界面设计,由于成员变动加上和其他成员距离较远,服务器404 赖晓连 改进Alpha版本页面没能及时更新的问题 雷晶 获取提问问题时间更新到数据库 林巧娜 今 ...

  3. lintcode-391-数飞机

    391-数飞机 给出飞机的起飞和降落时间的列表,用 interval 序列表示. 请计算出天上同时最多有多少架飞机? 注意事项 如果多架飞机降落和起飞在同一时刻,我们认为降落有优先权. 样例 对于每架 ...

  4. Struts2:<s:action>的使用

    <s:action name=”actionName” namespace=”/” executeResult=”true”> <s:action>可以在jsp中直接调用act ...

  5. View 渲染

    在Spring MVC 中,controllers不负责具体的页面渲染,仅仅是调用业务逻辑并返回model数据给view层,至于view层具体怎么展现,由专门的view层具体负责,这就是MVC模式,业 ...

  6. 敏捷冲刺DAY5

    一. 每日会议 1. 照片 2. 昨日完成工作 发布和提供需求功能的实现 用户修改自己的信息 用户界面设计 管理员界面设计 3. 今日完成工作 4. 工作中遇到的困难 1.设置的背景无法显示. 2.一 ...

  7. LR之Java Vuser II

    最近项目待压测的服务端协议使用的是java的Netty框架开发,而传输的业务数据使用了google protobuf进行序列化,然后通过tcp数据流与客户端通讯.这一次的压测脚本决定使用LR的java ...

  8. websocket服务器+客户端

    <?php $demo = new ws('192.168.90.47',12345); $demo->run(); class ws { //当前服务端主连接 private $curr ...

  9. Git回滚merge操作

    执行完merge操作后,没有修改代码 1.命令 ⑴ git reflog 查看merge操作的上一个提交记录的版本号 ⑵ git reset –hard 版本号 这样可以回滚到merge之前的状态 2 ...

  10. default.properties文件

    在地址栏访问某个 action 之所以能访问到,只因为在 default.properties 配置文件中有一个键值对,key 为struts.action.extension,值为 action,, ...