Keras教学(1):Keras是什么

【写在前面】:大家好,我是【猪葛】
一个很看好AI前景的算法工程师
在接下来的系列博客里面我会持续更新Keras的教学内容(文末有大纲)
内容主要分为两部分
第一部分是Keras的基础知识
第二部分是使用Keras搭建FasterCNN、YOLO目标检测神经网络
代码复用性高
如果你也感兴趣,欢迎关注我的动态一起学习
学习建议:
有些内容一开始学起来有点蒙,对照着“学习目标”去学习即可
一步一个脚印,走到山顶再往下看一切风景就全明了了



本篇博客学习目标:1、当朋友跟你谈论keras是什么的时候,你脑子不是一片空白;2、知道搭建神经网络的三个流程分别是:构建模型、搭配模型、训练模型。






Keras概念

Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。Keras 的开发重点是支持快速的实验。能够以最小的时延把你的想法转换为实验结果,是做好研究的关键。


如果你在以下情况下需要深度学习库,请使用 Keras:


  • 允许简单而快速的原型设计(由于用户友好,高度模块化,可扩展性)。
  • 同时支持卷积神经网络和循环神经网络,以及两者的组合。
  • 在 CPU 和 GPU 上无缝运行。


Keras搭建神经网络总体流程

Keras 的核心数据结构是 model,一种组织网络层的方式。最简单的模型是Sequential 顺序模型 ,它由多个网络层线性堆叠。对于更复杂的结构,你应该使用 Keras 函数式 API,它允许构建任意的神经网络图。


下面先逐一拆解每个函数的意思,更加具体的解释请看下面完整代码中的注释


Sequential模型如下所示:


from keras.models import Sequential

model = Sequential()

创建完model之后可以简单地使用 .add() 来堆叠模型:


from keras.layers import Dense

model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))

在完成了模型的构建后, 可以使用.compile() 来配置学习过程:


model.compile(loss='categorical_crossentropy',
              optimizer='sgd',
              metrics=['accuracy'])

如果需要,你还可以进一步地配置你的优化器。Keras 的核心原则是使事情变得相当简单,同时又允许用户在需要的时候能够进行完全的控制(终极的控制是源代码的易扩展性)。


model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True))


现在,你可以批量地在训练数据上进行迭代了:


# x_train 和 y_train 是 Numpy 数组 -- 就像在 Scikit-Learn API 中一样。
model.fit(x_train, y_train, epochs=5, batch_size=32)


或者,你可以手动地将批次的数据提供给模型:


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)

完整代码(建议自己运行一遍,注意看代码注释,注意看代码注释,注意看代码注释)



"""
本实例使用的是tensorflow后端的keras,
所以导入keras的方式是
import tensorflow.keras
以此类推
"""


from tensorflow.keras.models import Sequential
import tensorflow as tf
from tensorflow.keras.layers import Dense

# ***************流程一:构建模型*********************
model = Sequential()   # 创建模型实例
model.add(Dense(units=64, activation='relu', input_dim=100))  # input_dim=100,表示输出的shape(None, 100)
model.add(Dense(units=10, activation='softmax'))  # 全连接的神经元个数为units=10, 激活函数activation='softmax'

# ***************流程二:搭配模型***********************
model.compile(loss='categorical_crossentropy',
              optimizer='sgd',
              metrics=['accuracy'])  # 选用模型训练使用的损失函数和优化函数和评价指标

# 或者使用实例对象,在实例化对象的过程中进行参数初始化,详情看类SGD的初始化
# model.compile(loss=keras.losses.categorical_crossentropy,
#               optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True))

# ****************流程三:训练模型***************************
# 自己假设训练数组
x_train, y_train = tf.random.truncated_normal(shape=(1000, 100)), tf.random.truncated_normal(shape=(1000, 1))
# x_train 和 y_train 是 Numpy 数组或者是Tensor变量都可,此处是Tensor变量, 开始训练
model.fit(x_train, y_train, epochs=5, batch_size=32)

代码运行结果


Train on 1000 samples
Epoch 1/5
1000/1000 [==============================] - 0s 391us/sample - loss: -0.3190 - accuracy: 0.1590
Epoch 2/5
1000/1000 [==============================] - 0s 48us/sample - loss: -0.3125 - accuracy: 0.1590
Epoch 3/5
1000/1000 [==============================] - 0s 50us/sample - loss: -0.3265 - accuracy: 0.1570
Epoch 4/5
1000/1000 [==============================] - 0s 50us/sample - loss: -0.3447 - accuracy: 0.1450
Epoch 5/5
1000/1000 [==============================] - 0s 64us/sample - loss: -0.3743 - accuracy: 0.1380

Process finished with exit code 0


有了这个总体框架,以后的内容不过就是在细化每一部分的知识和步骤而已,下期详细解释如何使用Sequence对象创建模型,欢迎关注收藏我的动态一起学习~,下面是系列内容目录截图:



系列目录

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值