卷积神经网络的参数维度(15)---《深度学习》
2017-10-19 20:41
232 查看
在写这篇博客之前,提一个奇奇怪怪的问题啦!
问题:如果我们将输入转化为(n,)而不是(n,1),那么此时的每一层的权重w或者偏置b的误差应该怎样求解呢?
为什么会有卷积神经网络单独列出来查看起参数维度呢?其实是因为在使用tf.nn.softmax()的时候遇到问题啦,如下:
我们可以清晰的看到当最后一层的维度是(10,1)的时候,结果和我们预期的结果不是一样的,当最后一层的维度是(10,)的时候时候结果符合预期。
而我们知道,当我们搭建一个NN的时候,最后一层就是(n,1),如果分析mnist网络的时候,则是(10,1),那么这样卷积神经网络的结构是怎样的呢?这就是我们的问题!
我们来看看在卷积神经网络中,每一层的输出和输入是什么,如下:
运行结果:
我们假设全连接层的输入为(n,),下面我们来看看效果!
这儿更能看清CNN的输入结构为(n,),如下:
根据上面的代码我们可以看到CNN神经网络中,和神经网络的架构一致,只是将神经网络NN中的(n,1)转化为(n,)这样实现的,因此避免了softmax转化失败的问题!
哈哈,马上结束啦,那么上面提到的问题的答案呢,不写啦,为什么呢?因为。。。因为还没想清楚呢,哈哈哈,挖了一个大坑自己却绕过去了,需要大家一起来填坑了!
不会这么不负责啦,具体大家可以可以看看这两篇博客啦,一篇介绍卷积神经网络中的参数更新,另一篇介绍神经网络的搭建和参数设置!
tensorflow在mnist集上的使用示例(一)
卷积神经网络误差分析
问题:如果我们将输入转化为(n,)而不是(n,1),那么此时的每一层的权重w或者偏置b的误差应该怎样求解呢?
为什么会有卷积神经网络单独列出来查看起参数维度呢?其实是因为在使用tf.nn.softmax()的时候遇到问题啦,如下:
我们可以清晰的看到当最后一层的维度是(10,1)的时候,结果和我们预期的结果不是一样的,当最后一层的维度是(10,)的时候时候结果符合预期。
而我们知道,当我们搭建一个NN的时候,最后一层就是(n,1),如果分析mnist网络的时候,则是(10,1),那么这样卷积神经网络的结构是怎样的呢?这就是我们的问题!
我们来看看在卷积神经网络中,每一层的输出和输入是什么,如下:
import tensorflow as tf def weight_variable(shape): initial = tf.truncated_normal(shape, stddev=0.1) return tf.Variable(initial) def bias_variable(shape): initial = tf.constant(0.1, shape=shape) return tf.Variable(initial) def conv2d(x, W): return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME') def max_pool_2_2(x): return tf.nn.max_pool(x, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME') x1_shape=[60000,28,28,1] w1_shape=[5,5,1,32] b1_shape=[32] x1=weight_variable(x1_shape) w1=weight_variable(w1_shape) b1=bias_variable(b1_shape) x2=conv2d(x1,w1)+b1 h2=max_pool_2_2(x2) print(h2.get_shape().as_list()) w2_shape=[5,5,32,64] b2_shape=[64] w2=weight_variable(w2_shape) b2=bias_variable(b2_shape) x3=conv2d(h2,w2)+b2 h3=max_pool_2_2(x3) print(h3.get_shape().as_list()) h3_flat=tf.reshape(h3,[-1,7*7*64]) w1_fc_shape=[7*7*64,1024] b1_fc_shape=[1024] w1_fc=weight_variable(w1_fc_shape) b1_fc=bias_variable(b1_fc_shape) x1_fc=tf.matmul(h3_flat,w1_fc)+b1_fc print(x1_fc.shape) w2_fc_shape=[1024,10] b2_fc_shape=[10] w2_fc=weight_variable(w2_fc_shape) b2_fc=bias_variable(b2_fc_shape) x2_fc=tf.matmul(x1_fc,w2_fc)+b2_fc print(x2_fc.shape)
运行结果:
我们假设全连接层的输入为(n,),下面我们来看看效果!
这儿更能看清CNN的输入结构为(n,),如下:
根据上面的代码我们可以看到CNN神经网络中,和神经网络的架构一致,只是将神经网络NN中的(n,1)转化为(n,)这样实现的,因此避免了softmax转化失败的问题!
哈哈,马上结束啦,那么上面提到的问题的答案呢,不写啦,为什么呢?因为。。。因为还没想清楚呢,哈哈哈,挖了一个大坑自己却绕过去了,需要大家一起来填坑了!
不会这么不负责啦,具体大家可以可以看看这两篇博客啦,一篇介绍卷积神经网络中的参数更新,另一篇介绍神经网络的搭建和参数设置!
tensorflow在mnist集上的使用示例(一)
卷积神经网络误差分析
相关文章推荐
- 神经网络的层参数维度(14)---《深度学习》
- 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-01-CNN基础知识点
- Deep Learning(深度学习)Convolutional Neural Networks卷积神经网络
- 写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1
- 深度学习系列Part2:迁移学习和微调深度卷积神经网络
- 深度学习系列(九):详解工具箱参数及网络一种改进方式-dropout
- 深度学习(DL):卷积神经网络(CNN):从原理到实现
- VSTS有Bug,分析数据库的维度和维度属性使用中文命名时候,作为报表参数会出错。虽然有解决办法但是头大。
- 写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1
- 《神经网络和深度学习》系列文章六:通过梯度下降法学习参数
- 卷积神经网络参数说明
- 【吴恩达deeplearning.ai】深度学习(7):卷积神经网络
- 深度学习笔记二-CNN(卷积神经网络)是什么?
- 深度学习(三十九)可视化理解卷积神经网络(2.0)
- 深度学习(四)卷积神经网络Lenet-5实现
- 【深度学习系列】手写数字识别--卷积神经网络CNN原理详解(一)
- 5-15-运行JAVA类并传递参数
- 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-03-基于Python的LeNet之LR
- 卷积神经网络与caffe Convolution层及参数设置
- 详细解释CNN卷积神经网络各层的参数和链接个数的计算