使用函数式API构建神经网络

函数式API相比于keras.Sequential()具有更加灵活多变的特点。

函数式API主要应用于多输入多输出的网络模型。

利用函数式API构建神经网络主要分为3步,1.构建输入层,2.构建中间层与输出层并连接神经层,3.生成神经网络模型。

1.构建输入层

输入层的构建较为简单,调用keras.Input()方法来构建输入层。

1 input = keras.Input(shape = (28, 28))

shape参数是输入数据的形状(这里输入的是一个28*28的二维数据)。

2.构建中间层与输出层并连接神经层

上一篇博客中有提到过,输出层与中间层的差别主要在于激活函数/分类器的选用上,其他部分大致相同,所以这里放在一起讲。

函数式API是把神经网络层作为函数相互调用以达到连接神经层变成神经网络的目的。

可以在构建神经层的时候直接连接,其结构与Sequential模型相似。

1 x = keras.layers.Flatten()(input) #调用函数式API
2 x = keras.layers.Dense(32, activation = "relu")(x)
3 x = keras.layers.Dropout(0.5)(x)
4 x = keras.layers.Dense(64, activation = "relu")(x)
5 output = keras.layers.Dense(10, activation = "softmax")(x)

或者是先构建神经层,再按照自己需要的顺序相连。

1 a = keras.layers.Flatten()(input)
2 b = keras.layers.Dense(32, activation = "relu")
3 b = b(a)
4 c = keras.layers.Dropout(0.5)
5 c = z(b)
6 d = keras.layers.Dense(64, activation = "relu")
7 d = d(c)
8 output = keras.layers.Dense(10, activation = "softmax")
9 output = output(d)

不难看出,使用函数式API相对繁琐,但是能看出它的灵活性远高于Sequential模型。

3.生成神经网络模型

使用keras.Model()方法生成网络模型

1 model = keras.Model(inputs = input, outputs = output)

参数分别是神经网络的输入和输出层。

最后使用.compile()方法和.fit()方法确定模型训练流程并训练即可。

Tensorflow学习笔记No.2的更多相关文章

  1. Tensorflow学习笔记2:About Session, Graph, Operation and Tensor

    简介 上一篇笔记:Tensorflow学习笔记1:Get Started 我们谈到Tensorflow是基于图(Graph)的计算系统.而图的节点则是由操作(Operation)来构成的,而图的各个节 ...

  2. Tensorflow学习笔记2019.01.22

    tensorflow学习笔记2 edit by Strangewx 2019.01.04 4.1 机器学习基础 4.1.1 一般结构: 初始化模型参数:通常随机赋值,简单模型赋值0 训练数据:一般打乱 ...

  3. Tensorflow学习笔记2019.01.03

    tensorflow学习笔记: 3.2 Tensorflow中定义数据流图 张量知识矩阵的一个超集. 超集:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S ...

  4. TensorFlow学习笔记之--[compute_gradients和apply_gradients原理浅析]

    I optimizer.minimize(loss, var_list) 我们都知道,TensorFlow为我们提供了丰富的优化函数,例如GradientDescentOptimizer.这个方法会自 ...

  5. 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识

    深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...

  6. 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别

    深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...

  7. tensorflow学习笔记(4)-学习率

    tensorflow学习笔记(4)-学习率 首先学习率如下图 所以在实际运用中我们会使用指数衰减的学习率 在tf中有这样一个函数 tf.train.exponential_decay(learning ...

  8. tensorflow学习笔记(3)前置数学知识

    tensorflow学习笔记(3)前置数学知识 首先是神经元的模型 接下来是激励函数 神经网络的复杂度计算 层数:隐藏层+输出层 总参数=总的w+b 下图为2层 如下图 w为3*4+4个   b为4* ...

  9. tensorflow学习笔记(2)-反向传播

    tensorflow学习笔记(2)-反向传播 反向传播是为了训练模型参数,在所有参数上使用梯度下降,让NN模型在的损失函数最小 损失函数:学过机器学习logistic回归都知道损失函数-就是预测值和真 ...

  10. tensorflow学习笔记(1)-基本语法和前向传播

    tensorflow学习笔记(1) (1)tf中的图 图中就是一个计算图,一个计算过程.                                       图中的constant是个常量 计 ...

随机推荐

  1. Toast 响应点击事件

    import java.lang.reflect.Field; import android.content.Context; import android.util.Log; import andr ...

  2. Myabtis动态SQL,你真的会了吗?

    目录 前言 什么是动态SQL? 常用的标签 if choose.when.otherwise where foreach set sql include 总结 拓展一下 Mybatis中如何避免魔数? ...

  3. SICP 习题1.10

    题目要求 解题方法 递归计算 没什么好说的,单纯的套用数学公示 (define (f n) (if (< n 3) n (+ (f (- n 1)) (* 2 (f (- n 2))) (* 3 ...

  4. 10 router

    https://router.vuejs.org/zh/guide/advanced/navigation-guards.html 1.路由守卫beforeEach router.beforeEach ...

  5. linux 文件系统和磁盘

    linux 文件系统和磁盘 1.文件系统 ext2, ext3, ext4 , XFS ext3和ext4为日志文件系统 文件系统格式 : 磁盘格式化为 inode和block inode是索引,记录 ...

  6. Beware of the encrypted VM

    A friend of mine Megan told me that she got an error message as below screenshot when trying to open ...

  7. 20190925-04Redis五大数据类型之Key 000 025

  8. input历史快捷-变黄解决

    一: <form action="loginAction" method="post" autocomplete="off">给 ...

  9. python模块:excel的读和修改xlrd/xultils

    一.xlrd xlrd只能对excel进行读取,不可编辑修改.该模块属于第三方模块,需要安装模块包并引入.pip install xlrd 常用的方法: import xlrd book = xlrd ...

  10. [LeetCode]面试题 01.06. 字符串压缩

    题目 字符串压缩.利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能.比如,字符串aabcccccaaa会变为a2b1c5a3.若"压缩"后的字符串没有变短,则返回原先 ...