keras学习之二:神经网络模型的使用
2017-07-27 13:01
423 查看
简介
keras提供了两种模型,一种是Sequential,译做序列型模型。另一种是Functional,译做函数型模型。二者可以从使用形式来区分,序列模型可以看做是面向对象的方法,一系列对象协作完成任务。函数模型则是一系列的过程调用来完成任务。序列模型的概念比较简单,就是把一些基础神经网络层组件一个个串联起来形成一个完整的模型,在此模型上进行训练,从而完成学习任务。
函数模型就是一系列的方法调用,一步步的过程来保证完成学习任务。
序列模型
序列模型实现在keras.models模块内,模块提供了模型的保存和重新加载的功能,方便我们可以中断和重新开始一个训练过程。save_model(model,path)
load_model(path)
Sequential类
add(layer) 向链尾追加一层神经网络层pop() 删除尾部的神经网络层
compile(optimizer,loss,metrics) 配置模型的训练参数
optimizer 选择使用的优化方法,提供下列可选项
SGD(Stochastic gradient descent) 随机梯度下降
RMSprop,RNN的好选择
Adagrad
Adadelta 文献
Adam 文献
Nadam 文献
TFOptimizer
loss 选择损失函数,提供下列可选项
mean_squared_error mse
mean_absolute_error mae
binary_crossentropy 二分类问题交叉熵
categorical_crossentropy 多分类交叉熵,y需要转为one_hot形式
cosine_proximity 余弦距离平均值的相反数
poisson (predictions - targets * log(predictions))的均值
metrics 选择计算结果
accuracy
binary_accuracy
categorical_accuracy
top_k_categorical_accracy
fit(x,y,batch_size,epochs) 使用数据对模型进行epochs轮的训练
evaluate(x,y,batch_size) 对模型在测试数据集上进行评估
predict/predict_class/predict_probe(x,batch_size,verbose=0) 使用模型对数据进行预测
train_on_batch/test_on_batch/predict_on_batch 系列方法均在一批数据上进行训练,测试与预测
fit_generator/evaluate_generator/predict_generator 系列方法均使用数据生成器产生的数据进行训练,测试与预测
get/set_weights()
save/load_weights(path) 模型训练参数的保存与加载
示例:mnist数据集训练
在例子中,mnist数据集使用tensor自带的dataset。其中数据分两部分,其中训练集60000条,测试集10000条。训练集中图像部分由(60000,28*28)的矩阵表示,矩阵的每个元素表示图像每个像素点的黑白取值,标签部分由(60000,1)矩阵表示,每行数字表示对应图像识别出的数字。关于mnist数据集的详细说明见此链接:http://yann.lecun.com/exdb/mnist/# coding=utf-8 import keras from keras.models import Sequential from keras.layers import Dense from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets(one_hot=True) img_train,label_train = mnist.train.next_batch(60000) img_test,label_test = mnist.test.next_batch(10000) #构建模型 model = Sequential() model.add(Dense(512,activation='relu',input_dim=784)) model.add(Dense(512,activation='relu')) model.add(Dense(10,activation='softmax')) model.compile(optimizer='Adagrad',loss='categorical_crossentropy',metrics=['accuracy']) #训练及评估模型 hist = model.fit(img_train,label_train) loss,accu = model.evaluate(img_test,label_test) print("loss is %f accu is %f"%(loss,accu))
函数模型
在了解了序列模型的基础上,只需要再理解到,在keras中,模型是可调用的,就可以使用函数模型了。参考下面的代码,和上面是等效的。import keras from keras.layers import Dense,Input from keras.models import Model from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets(one_hot=True) img_train,label_train = mnist.train.next_batch(60000) img_test,label_test = mnist.test.next_batch(10000) input = Input(shape=(784,)) layer1 = Dense(512,activation='relu')(input) layer2 = Dense(512,activation='relu')(layer1) pred = Dense(10,activation='softmax')(layer2) model = Model(inputs=input,outputs=pred) model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy']) hist = model.fit(img_train,label_train,epochs=10) loss,accu = model.evaluate(img_test,label_test) print("loss is %f accu is %f"%(loss,accu))
结语
从示例来看,keras提供了一种非常高层的神经网络机器学习模型的封装,我们可以使用20行左右代码就能完成在tensorflow中需要上百行才能完成的任务。相关文章推荐
- 牛津大学神经网络语言模型 OxLM 安装及使用
- 使用TensorFlow训练循环神经网络语言模型
- 使用Matlab结合神经网络模型对多波段影像进行计算
- 百度无人驾驶apollo项目使用的神经网络模型分析
- 使用 全连接神经网络 和 词袋模型 进行文本分类的example
- 使用python写神经网络模型之分类器
- 【神经网络与深度学习】Caffe使用step by step:使用自己数据对已经训练好的模型进行finetuning
- 使用Tensorflow训练神经网络模型---自定义损失函数
- 图像风格转移中神经网络模型的使用
- tensorflow 核心流程剖析 4-- 使用profiler检测神经网络模型的运行性能
- 使用python写神经网络模型之分类器
- tensorflow17《TensorFlow实战Google深度学习框架》笔记-08-02 使用循环神经网络实现语言模型 code
- 使用循环神经网络实现语言模型——源自《TensorFlow:实战Goole深度学习框架》
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【三】使用Caffe的MemoryData层与VGG网络模型提取Mat的特征
- 新版Matlab中神经网络训练函数Newff的使用方法
- matlab中函数SOFM在神经网络方面的使用方法
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【三】使用Caffe的MemoryData层与VGG网络模型提取Mat的特征
- 使用python实现深度神经网络 4
- 基于回归神经网络的中文语句模型实践(Python+Tensorflow+阿里云)
- 使用nntool神经网络工具箱建立单层感知器