有源码提供:还在苦恼如何写CNN网络?看大神如何使用keras11行代码构建CNN网络
我曾经演示过如何使用TensorFlow创建卷积神经网络(CNN)来对MNIST手写数字数据集进行分类。TensorFlow是一款精湛的工具,具有强大的功能和灵活性。然而,对于快速原型制作工作,可能显得有些麻烦。Keras是一个运行在TensorFlow或者Theano的更高级别的库,旨在流线化构建深度学习网络的过程。事实上,在上一篇TensorFlow教程中,TensorFlow大约需要42行完成的内容,在Keras中只需11行就可以完成类似的功能。接下来我将向你展示如何通过Keras做到这一点。该Keras教程将向你展示如何使用MNIST数据集构建CNN并实现> 99%的准确性。它与我之前的卷积神经网络教程中构建的结构完全相同,下图显示了网络的架构:这个Keras教程的完整代码可以在这里找到。Keras教程中的主要代码讲解:下面的代码是在此Keras教程中使用的CNN结构的“胆量”model = Sequential()(Conv2D(32, kernel_size=(5, 5), strides=(1, 1),接下来我们一步一步的来解释:Model = Sequential()Keras中的模型可以有两种——序贯和通过API函数。对于构建的大多数深度学习网络,序贯模型是最常用的。它允许你从输入到输出整个过程都能轻松地堆叠网络层(甚至循环层)。而API函数可以帮助你构建更复杂的网络体系结构,本教程将不介绍它。第一行将模型类型声明为Sequential()。(Conv2D(32, kernel_size=(5, 5), strides=(1, 1),接下来,我们添加一个2D卷积层来处理2D MNIST输入的图像。传递给Conv2D()函数的第一个参数是输出通道的数量。这里我们设置为我们有32个输出通道,下一个输入是kernel_size,我们选择了一个5×5移动窗口,其次是x和y方向(1,1)的步态。接着,激活函数是整流线性单元,最后我们必须与输入层的大小提供模型。还要注意,我们不必声明任何权重或偏差变量,Keras会帮助我们进行完成。(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))接下来我们添加一个2D max pooling层。层的定义很简单。在这种情况下,我们只是简单地指定在x和y方向上的池的大小和(2,2)的步。(Conv2D(64, (5, 5), activation='relu'))(MaxPooling2D(pool_size=(2, 2)))接下来,我们添加另一个卷积层+最大池化层,具有64个输出通道。在Keras中Conv2D()函数的参数默认的步伐是(1,1),在Keras 中默认步伐是使它等于池的大小。该层的输入张量是(batch_size,28,28,32)28×28是图像的大小,32是来自上一层的输出通道数。但是,我们不必明确说明输入的形状是什么,Keras也能自动识别。这样可以快速组合网络架构,而不用担心网络周围张量的大小。(Flatten(
有源码提供:还在苦恼如何写CNN网络?看大神如何使用keras11行代码构建CNN网络 来自淘豆网m.daumloan.com转载请标明出处.