当前位置 博文首页 > Keras入门系列教程:两分钟构建你的第一个神经网络模型..._weixi

    Keras入门系列教程:两分钟构建你的第一个神经网络模型..._weixi

    作者:[db:作者] 时间:2021-09-11 10:42

    本教程由深度学习中文社区(Studydl.com)持续发布与更新, 本系列其余教程地址见文章末尾.

    引言

    Keras是一个用于构建和训练深度学习模型的高级API, 后端计算主要使用TensorFlow或者Theano, 由于Theano已停止开发新功能转入维护阶段, 而且目前最新版的TensorFlow已经包含了Keras模块, 所以本教程采用基于TensorFlow的Keras进行讲解, TensorFlow版本1.4.1。Keras主要用于快速原型设计,高级研究和生产中,具有三个主要优势:

    用户友好的

    Keras提供一致而简洁的API, 能够极大减少一般应用下用户的工作量,同时,Keras提供清晰和具有实践意义的bug反馈。

    模块化和可组合的

    Keras模型是通过将可配置的模块连接在一起而制定的,几乎没有限制。

    易于扩展

    很容易编写自定义模块以表达研究的新想法。创建新图层,损失函数并开发最先进的模型。

    导入tf.keras

    tf.keras是TensorFlow实现的 Keras API规范。这是一个用于构建和训练模型的高级API,其中包括对TensorFlow特定功能的一流支持,例如急切执行, tf.data pipeline和estimators。 tf.keras使TensorFlow更易于使用而不牺牲灵活性和性能。

    要开始使用tf.keras, 请将其作为TensorFlow程序的一部分导入:

    import tensorflow as tffrom tensorflow import keras

    tf.keras 可以运行任何与Keras兼容的代码,但请记住:

    在TensorFlow中的tf.keras最新版本可能与PyPI版本的最新的Keras版本不一样, 可以通过运行tf.keras.version来检查.当保存模型的权重,tf.keras默认为CheckPoint的格式。可以通过在代码中设置save_format='h5'使用HDF5。

    构建一个简单的模型

    顺序模型

    在Keras中,您可以组装网络层来构建模型。模型通常是一个网络层构成的图。最常见的模型类型是一个叫做序贯模型的叠加层:tf.keras.Sequential模型。

    构建一个简单的全连接的网络(即多层感知器):

    model = keras.models.Sequential()# 添加一个含有64个神经网络单元的全连接层到模型中,并且指定输入数据的维度model.add(keras.layers.Dense(64, activation='relu',input_shape=(64,)))# 添加另外一个model.add(keras.layers.Dense(64, activation='relu'))# 添加一个具有10个输出单元且使用softmax为激活函数的全连接层model.add(keras.layers.Dense(10, activation='softmax'))

    通过上面的代码一个具有一个输入层,一个隐藏层,一个输出层的神经网络模型就构建好了.

    配置网络层

    除了上面的示例外, tf.keras.layers.Dense层还可以使用很多的参数, 主要的功能如下:

    activation:设置网络层的激活函数。此参数由内置函数的名称或可调用对象指定。默认情况下,不应用任何激活。kernel_initializer和bias_initializer:创建网络层时内核或者偏差权重的初始化方案。此参数是名称或可调用对象。这里默认为"Glorot uniform"初始化方案。kernel_regularizer和bias_regularizer:设置应用于网络层中内核或者偏差权重的正则化方案,例如L1或L2正则化。默认情况下,不应用正则化。

    以下是tf.keras.layers.Dense使用构造函数参数实例化网络层:

    # 创建一个使用sigmoid为激活函数的layerlayers.Dense(64, activation='sigmoid')# 也可以这样创建,效果一样layers.Dense(64, activation=tf.sigmoid)# 一个kernel矩阵使用正则化因子为0.01的L1正则项的全连接层layers.Dense(64, kernel_regularizer=keras.regularizers.l1(0.01))# 一个偏差向量使用正则化因子为0.01的L2正则项的全连接层layers.Dense(64, bias_regularizer=keras.regularizers.l2(0.01))# 一个使用随机正交矩阵初始化Kernel的全连接层layers.Dense(64, kernel_initializer='orthogonal')# 一个偏差初始化时全为2的全连接层layers.Dense(64, bias_initializer=keras.initializers.constant(2.0))

    在上面的内容中,我们使用了几行代码就建立了一个神经网络模型,由此可见Keras真的是非常简单易用,方便上手, 下一期文章中我们将讲解在Keras中怎么输入数据与训练搭建好的神经网络, 欢迎大家关注我的百家号,第一时间获得最新教程推送.

    TensorFlow入门系列教程文章地址:

    只需以下两步就可获取到零基础入门教教程啦:

    回到文章最上方点击关注按钮关注我的百家号,方便接收最新教程.点击标题下方的头像位置, 就可进入我的主页, 里面就有我之前发布的TensorFlow入门系列教程啦.

    目前已发布的TensorFlow入门教程列表:

    cs