keras 实现人工神经网络
#encoding=utf-8
import numpy as np
from keras.models import Sequential
from keras.layers import Dense,Activation#激活函数可以通过设置单独的激活层实现,也可以在构造层对象时通过传递activation参数实现。
from keras.optimizers import SGD#随机梯度下降法,支持动量参数,支持学习衰减率,支持Nesterov动量。 '''
快速开始序贯(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()方法一个个的将layer加入模型中: model = Sequential()
model.add(Dense(32, input_shape=(784,)))
model.add(Activation('relu')) 指定输入数据的shape 模型需要知道输入数据的shape,因此,Sequential的第一层需要接受一个关于输入数据shape的参数,
后面的各个层则可以自动的推导出中间数据的shape,因此不需要为每个层都指定这个参数。有几种方法来为第一层指定输入数据的shape
传递一个input_shape的关键字参数给第一层,input_shape是一个tuple类型的数据,其中也可以填入None,
如果填入None则表示此位置可能是任何正整数。数据的batch大小不应包含在其中。
有些2D层,如Dense,支持通过指定其输入维度input_dim来隐含的指定输入数据shape。
一些3D的时域层支持通过参数input_dim和input_length来指定输入shape。
如果你需要为输入指定一个固定大小的batch_size(常用于stateful RNN网络),
可以传递batch_size参数到一个层中,例如你想指定输入张量的batch大小是32,数据shape是(6,8),
则你需要传递batch_size=32和input_shape=(6,8)。 model = Sequential()
model.add(Dense(32, input_dim=784)) model = Sequential()
model.add(Dense(32, input_shape=784)) 编译 在训练模型之前,我们需要通过compile来对学习过程进行配置。compile接收三个参数: 优化器optimizer:该参数可指定为已预定义的优化器名,如rmsprop、adagrad,或一个Optimizer类的对象. 损失函数loss:该参数为模型试图最小化的目标函数,它可为预定义的损失函数名,如categorical_crossentropy、mse,也可以为一个损失函数。详情见losses 指标列表metrics:对分类问题,我们一般将该列表设置为metrics=['accuracy']。
指标可以是一个预定义指标的名字,也可以是一个用户定制的函数.指标函数应该返回单个张量,
或一个完成metric_name - > metric_value映射的字典 '''
def main():
from sklearn.datasets import load_iris
iris = load_iris()
print(iris["target"])
from sklearn.preprocessing import LabelBinarizer
print LabelBinarizer().fit_transform(iris["target"]) from sklearn.model_selection import train_test_split
train_data, test_data, train_traget, test_target = train_test_split(iris.data, iris.target, test_size=0.2,random_state=1)
labels_train = LabelBinarizer().fit_transform(train_traget)
labels_test = LabelBinarizer().fit_transform(test_target) model= Sequential([
Dense(5,input_dim=4),
Activation("relu"),#激活函数
Dense(3),
Activation("sigmoid"),#激活函数自己看去。 ]) sgd = SGD(lr=0.01,decay=1e-6,momentum=0.9,nesterov=True)
model.compile(optimizer=sgd,loss="categorical_crossentropy")
model.fit(train_data,labels_train,nb_epoch=200,batch_size=40)
print(model.predict_classes(test_data))
model.save_weights("./python_source/w")
model.load_weights("./python_source/w")
#使用这个是会出现错误提示缺少h5py,直接pip install h5py 就可以了。
if __name__ == '__main__':
main()
keras 实现人工神经网络的更多相关文章
- neurosolutions 人工神经网络集成开发环境 keras
人工神经网络集成开发环境 : http://www.neurosolutions.com/ keras: https://github.com/fchollet/keras 文档 http ...
- keras人工神经网络构建入门
//2019.07.29-301.Keras 是提供一些高度可用神经网络框架的 Python API ,能帮助你快速的构建和训练自己的深度学习模型,它的后端是 TensorFlow 或者 Theano ...
- [DL学习笔记]从人工神经网络到卷积神经网络_2_卷积神经网络
先一层一层的说卷积神经网络是啥: 1:卷积层,特征提取 我们输入这样一幅图片(28*28): 如果用传统神经网络,下一层的每个神经元将连接到输入图片的每一个像素上去,但是在卷积神经网络中,我们只把输入 ...
- [DL学习笔记]从人工神经网络到卷积神经网络_1_神经网络和BP算法
前言:这只是我的一个学习笔记,里边肯定有不少错误,还希望有大神能帮帮找找,由于是从小白的视角来看问题的,所以对于初学者或多或少会有点帮助吧. 1:人工全连接神经网络和BP算法 <1>:人工 ...
- C#中调用Matlab人工神经网络算法实现手写数字识别
手写数字识别实现 设计技术参数:通过由数字构成的图像,自动实现几个不同数字的识别,设计识别方法,有较高的识别率 关键字:二值化 投影 矩阵 目标定位 Matlab 手写数字图像识别简介: 手写 ...
- 开源的c语言人工神经网络计算库 FANN
这年头机器学习非常的火,神经网络算是机器学习算法中的比较重要的一种.这段时间我也花了些功夫,学了点皮毛,顺便做点学习笔记. 介绍人工神经网络的基本理论的教科书很多.我正在看的是蒋宗礼教授写的<人 ...
- 机器学习笔记之人工神经网络(ANN)
人工神经网络(ANN)提供了一种普遍而且实际的方法从样例中学习值为实数.离散值或向量函数.人工神经网络由一系列简单的单元相互连接构成,其中每个单元有一定数量的实值输入,并产生单一的实值输出. 上面是一 ...
- 人工神经网络(Artificial Neural Networks)
人工神经网络的产生一定程度上受生物学的启发,因为生物的学习系统是由相互连接的神经元相互连接的神经元组成的复杂网络.而人工神经网络跟这个差不多,它是一系列简单的单元相互密集连接而成的.其中每个单元有一定 ...
- 人工神经网络简介和单层网络实现AND运算--AForge.NET框架的使用(五)
原文:人工神经网络简介和单层网络实现AND运算--AForge.NET框架的使用(五) 前面4篇文章说的是模糊系统,它不同于传统的值逻辑,理论基础是模糊数学,所以有些朋友看着有点迷糊,如果有兴趣建议参 ...
随机推荐
- 【Spark-core学习之四】 Spark任务提交
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...
- java.lang.ClassCastException: com.sun.proxy.$Proxy* cannot be cast to***
Spring AOP 有两种代理方法, 一种是常规JDK,一种是CGLIB. 当代理对象实现了至少一个接口时,默认使用JDK动态创建代理对象: 当代理对象没有实现任何接口时,就会使用CGLIB方法. ...
- Linux 其它知识点
1:import sys ----导入路径 sys.path.append("/hom") ----添加一个hom的路径 2:重新导入模块 from imp import ...
- 『Numpy』np.meshgrid
生成网格坐标,一个很好的说明图如下: 虽然xy双坐标比较常用,但实际上其输入可以是任意多的数组,输出数组数目等于输出数组数目,且彼此间shape一致. 如果输入数组不是一维的,会拉伸为1维进行计算. ...
- java 全局变量 的小结
利用关键字final声明常量,对于全局的常量(即在整个项目中都可用)通常按以下模式声明:public static final int MAX_VALUE=512 如果某常量只在本类使用,则应将其定义 ...
- 【Bcftools】合并不同sample的vcf文件,通过bcftools
通过GATK calling出来的SNP如果使用UnifiedGenotype获得的SNP文件是分sample的,但是如果使用vcftools或者ANGSD则需要Vcf文件是multi-sample的 ...
- SpringBoot整合shiro实现用户的认证授权
* 项目环境搭建 * 配置ShiroConfig,用于shiro的基本配置和注入自定义规则 * 实现自定义的realm,继承AuthorizingRealm * 编写测试controller和页面 基 ...
- How to use “cat” command on “find” command's output?
You can do this with find alone using the -exec action: find /location -size 1033c -exec cat {} + {} ...
- MyBatis进阶(三)
MyBatis批量新增数据 1. 传统的JDBC批量插入数据 使用for循环 创建连接 获取连接 创建sql语句,交给连接 使用for循环新增数据 提交连接 使用批处理 两者都存在严重的效率问题,代码 ...
- Mac OS X 避免产生临时文件 .DS_Store
参考: 删除Mac中所有 .DS_Store 隐藏文件 Mac OS X 避免产生临时文件 .DS_Store .DS_Store 隐藏文件保存针对目录的特殊信息和设置配置,例如查看方式,图标大小以及 ...