卜若的代码笔记-Deeplerning-第四章:双层浅层神经网络

1 回顾一下我们原始的神经网络

在这个网络里面抛开输入层和输出层,隐藏层就只有一层,虽然能挖掘部分特征,但是其远远不过,不过浅层神经网络本身的功率其实有限,我们会在以这一章节中尝试去添加新的一层W2。

1.1 我们修改一下W的结构

W = [784,1000]

我们追加了1000个神经元,与此同时,我们的偏置值也要变动

Bias = [1,1000]

现在,我们追加第二层W2

W2 = [1000,10]

我们追加第二层偏置值Bias2

Bias2 = [1,10]

重新预测

h1 = x*W+Bias

h2 = h1*W2+Bias2

新的预测值为

Prediction = SoftMax(h2)

 

现在,让我们来修改一下以下我们的网络



import tensorflow as tf

x = tf.placeholder(tf.float32,[None,784])
YLabel = tf.placeholder(tf.float32,[None,10])
W = tf.Variable(tf.truncated_normal([784,1000],stddev=0.1))
Bias = tf.Variable(tf.truncated_normal([1,1000],stddev=0.1))
H1 = tf.matmul(x,W)+Bias

#H1 = tf.nn.dropout(H1,0.5)
W2 = tf.Variable(tf.truncated_normal([1000,10],stddev=0.1))
Bias2 = tf.Variable(tf.truncated_normal([1,10],stddev=0.1))
H2 = tf.matmul(H1,W2)+Bias2
Prediction = tf.nn.softmax(H2)
Loss = tf.reduce_mean(tf.square(Prediction-YLabel))
Train = tf.train.GradientDescentOptimizer(0.2).minimize(Loss)
BoolCorrect = tf.equal(tf.argmax(Prediction,1),tf.argmax(YLabel,1))
Accuracy = tf.reduce_mean(tf.cast(BoolCorrect,tf.float32))
Init = tf.global_variables_initializer()


 针对新的网络,我们将它丢到Context中运行,发现:

其准确率居然在下降???

 卧槽!无情?

我们有几种假设:

对于单层的浅层神经网络,它的评分网络结构是

Net = [784,10]

针对这个网络,有一个输入

Input   = [1,784]

它是一张图片展开成为了行向量。

Input * Net = [1,10]

获得一个结果

这个结果可以认为是这个网络对这个输入的评价。

它有10个指标,这10个指标会从你的标准样本标签中学到指导其具体特征比如0,1,2,3...的特征指标。

10对10,这通常是比较客观的。

现在,我尝试将网络扩展成

h1 = [784,1000]

h2 = [1000,10]

那么对于第一层网络就产生了1000个评价指标,指导这1000个评价指标学习的源就是h2,这是反向传播的原理,但是,现在有个问题就是,其实对于这个问题来说,h1,h2之间其实是充满不确定性的,也就是1000个指标太多了,它冗余太多就会冲淡事实,这是一件非常糟糕的事情!所以h2的具体功能就是对h1进行加权评价,得到更为客观的结果。

从理论上来说,这样做是具有优势的...

但是...还是那个问题,冗余太多,前后层神经元之间联系糟糕,从而导致....这个网络

它充满了不确定,它在学习的过程中总是犹豫的,嗯,这也是为什么浅层神经网络会在早期被放弃的原因。

所以,针对大量神经元的冗余,我们通常是有解决办法的,我们随机去掉一些神经元试试:

这种机制在Tensorflow里面具有原生API:

H1 = tf.nn.dropout(H1,0.5)

这样,我们能够干掉一些冗余的神经元,去其糟粕,留其精华,这是极具意义的。

我们的结果也能...表现得更好

准确率曲线:

损失曲线:

显然有了一定优化,至于怎么调到90%以上的准确率,这是一个艰难的调参过程。

加油咯~

下一章,我们讲解卷积神经网络

发布了202 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_37080133/article/details/102327987