卷积神经网络的参数维度(15)---《深度学习》

在写这篇博客之前,提一个奇奇怪怪的问题啦!
问题:如果我们将输入转化为(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集上的使用示例(一)
卷积神经网络误差分析

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值