keras入门

2019-08-29 11:04:54 浏览数 (1)

深度学习

深度学习(Deep Learning, DL)或阶层学习(hierarchical learning)是机器学习的技术和研究领域之一,通过建立具有阶层结构的人工神经网络(Artifitial Neural Networks, ANNs),在计算系统中实现人工智能。由于阶层ANN能够对输入信息进行逐层提取和筛选,因此深度学习具有表征学习(representation learning)能力 ,可以实现端到端的监督学习和非监督学习 。此外,深度学习也可参与构建强化学习(reinforcement learning)系统,形成深度强化学习 。

深度学习能做什么事

深度学习开创出众多机器学习方面的实际应用和全面推广人工智慧领域 ,解决了许多任务,看起来有可能实现机器助手的梦想。无人驾驶车、更好的医疗预防服务,甚至是推荐更好看的电影,这些都已实现或在不远的道路上。人工智慧则是处在当下和未来。有了深度学习和机器学习,人工智慧甚至能实现我们一直以来在科幻小说里所想像的状态。

深度学习框架

在开始深度学习项目之前,选择一个合适的框架是非常重要的,因为选择一个合适的框架能起到事半功倍的作用。研究者们使用各种不同的框架来达到他们的研究目的,侧面印证出深度学习领域百花齐放。全世界最为流行的深度学习框架有PaddlePaddle、Tensorflow、Caffe、keras·、Theano、MXNet和PyTorch。

环境安装

  • anaconda的安装
  • tensorflow安装 (先安装cpu学习先)
代码语言:javascript复制
  pip install tensorflow==2.0.0-alpha0
  • 如果安装不了就安装
代码语言:javascript复制
  pip install tensorflow==1.5
  • 安装keras
代码语言:javascript复制
  pip install keras

什么是keras

https://keras.io/zh/

与其他任何深度学习框架相比,Keras 在行业和研究领域的应用率更高(除 TensorFlow 之外,且 Keras API 是 TensorFlow 的官方前端,通过 tf.keras 模块使用)。

  • 用户友好。Keras 是为人类而不是为机器设计的 API。它把用户体验放在首要和中心位置。Keras 遵循减少认知困难的最佳实践:它提供一致且简单的 API,将常见用例所需的用户操作数量降至最低,并且在用户错误时提供清晰和可操作的反馈。
  • 模块化。模型被理解为由独立的、完全可配置的模块构成的序列或图。这些模块可以以尽可能少的限制组装在一起。特别是神经网络层、损失函数、优化器、初始化方法、激活函数、正则化方法,它们都是可以结合起来构建新模型的模块。
  • 易扩展性。新的模块是很容易添加的(作为新的类和函数),现有的模块已经提供了充足的示例。由于能够轻松地创建可以提高表现力的新模块,Keras 更加适合高级研究。
  • 基于 Python 实现。Keras 没有特定格式的单独配置文件。模型定义在 Python 代码中,这些代码紧凑,易于调试,并且易于扩展。

从简单的线性回归入门

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

还是来用点求方程入门,生成50个点

代码语言:javascript复制
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = np.linspace(0,50,50)
y  =  3*x  7   np.random.randn(50) *5 #a = 3 ,b = 7
plt.scatter(x,y)
plt.show()
代码语言:javascript复制
import keras
model = keras.Sequential() ##顺序模型

Keras的“层”(Layer)

代码语言:javascript复制
from keras import layers
model.add(layers.Dense(1,input_dim=1))  # 输入输出都是一维的
model.summary()  # 可以输出层

从图中可以看出输入和输出都是一层吗,而且只有两个参数

编译模型

代码语言:javascript复制
model.compile(optimizer='adam',loss='mse')

使用优化算法 adam 和损失函数 mse 均方差

训练模型

代码语言:javascript复制
model.fit(x, y, epochs=3000)

epochs 参数是把数据训练3000遍

我们可以看到损失函数已经降到35.24多

预测数据

代码语言:javascript复制
model.predict(x)
plt.scatter(x, y, c='r')
plt.plot(x, model.predict(x))
plt.show()

0 人点赞