博主 撸的  该节 代码 地址 :https://github.com/LemonTree1994/machine-learning/blob/master/%E5%90%B4%E6%81%A9%E8%BE%BE%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/Untitled%20Folder%202/Untitled%20Folder%203/tf_tutorial.ipynb

博主参考的大牛(CSDN  何宽)的实践 :https://blog.csdn.net/u013733326/article/details/79971488

实践中遇到的坑:

1. 计算loss

zt = tf.transpose(z3)
yt = tf.transpose(y) # 使用一行一个数据 loss = tf.nn.softmax_cross_entropy_with_logits_v2(logits=zt,labels=yt)
loss = tf.reduce_mean(loss)

吴恩达教学视频中的数据shape 均为(feature_number,data_num),也就是理解为一列一条数据 。

tf.nn.softmax_cross_entropy_with_logits_v2

则是按照一行视为一条数据进行softmax运算,然后计算每行的损失。

因此需要将z3和y进行transpose()转置

2. 初始化参数

在博主参考的文档中,其使用以下代码和进行说明

    初始化tensorflow中的参数,我们将使用Xavier初始化权重和用零来初始化偏差,比如:

    W1 = tf.get_variable("W1", [25,12288], initializer = tf.contrib.layers.xavier_initializer(seed = 1))
    b1 = tf.get_variable("b1", [25,1], initializer = tf.zeros_initializer())

    tf.Variable() 每次都在创建新对象,对于get_variable()来说,对于已经创建的变量对象,就把那个对象返回,如果没有创建变量对象的话,就创建一个新的。

而博主 只是想简单的随机化生成一个规定shape的矩阵,于是入了坑

w1 = tf.Variable(tf.random_normal([20,12288],mean=0.0,stddev=0.01,dtype=tf.float32))
b1 = tf.Variable(tf.zeros([20,1]))
a1 = tf.nn.relu(tf.matmul(w1,x)+b1)

在一开始,博主傻乎乎的直接随机化了一个标准正太分布,结果训练结果非常不如人意,训练loss 刚开始为300多 然后骤降到1.x而后保证基本不变动。

训练结果预测均为某一个固定的类别。 找了n多原因等等,都没有作用。

最后 不知道脑子哪里反应过来了 发现w初始值太大。

可能是想起来前面的实践中 参数初始化的三种方式:

0初始化, 随机初始化,He初始化

其中随机初始化 也是标准正太分布的随机数值,但是吴大大在后面加上了*0.01 来使其逼近于0。

博主的学习笔记这样记录的:

  w初始化为0,会导致隐层单元一致,对称,计算完全相同。

  w初始化很大,z很大,梯度小,收敛慢。

所以应将参数初始化为一个很小的非0值,使用标准正太分布*0.01满足要求。

于是,博主将所有w的随机值均缩小了100倍,修改如上面代码中红色字体部分,之后算法训练完成后性能表现还可以,

在该超参数下learning_rate=0.001,网络层和单元数= [12288,20,11,6],优化算法Adam,epoch=1500,

loss从1.7 慢慢降低到0.07

训练集准确率达到98%,测试集81%。

参数初始化影响很大,一定不要忘了将参数初始化的值逼近于0。

博主的理解就是这样,如果有大佬发现不对的地方请及时指正。

一个最基本的深度神经网络就能达到这种程度,期待接下来的cnn。

深度学习 吴恩达深度学习课程2第三周 tensorflow实践 参数初始化的影响的更多相关文章

  1. 吴恩达课后习题第二课第三周:TensorFlow Introduction

    目录 第二课第三周:TensorFlow Introduction Introduction to TensorFlow 1 - Packages 1.1 - Checking TensorFlow ...

  2. 吴恩达深度学习第1课第4周-任意层人工神经网络(Artificial Neural Network,即ANN)(向量化)手写推导过程(我觉得已经很详细了)

    学习了吴恩达老师深度学习工程师第一门课,受益匪浅,尤其是吴老师所用的符号系统,准确且易区分. 遵循吴老师的符号系统,我对任意层神经网络模型进行了详细的推导,形成笔记. 有人说推导任意层MLP很容易,我 ...

  3. 【Deeplearning.ai 】吴恩达深度学习笔记及课后作业目录

    吴恩达深度学习课程的课堂笔记以及课后作业 代码下载:https://github.com/douzujun/Deep-Learning-Coursera 吴恩达推荐笔记:https://mp.weix ...

  4. 吴恩达深度学习第4课第3周编程作业 + PIL + Python3 + Anaconda环境 + Ubuntu + 导入PIL报错的解决

    问题描述: 做吴恩达深度学习第4课第3周编程作业时导入PIL包报错. 我的环境: 已经安装了Tensorflow GPU 版本 Python3 Anaconda 解决办法: 安装pillow模块,而不 ...

  5. 吴恩达深度学习第2课第2周编程作业 的坑(Optimization Methods)

    我python2.7, 做吴恩达深度学习第2课第2周编程作业 Optimization Methods 时有2个坑: 第一坑 需将辅助文件 opt_utils.py 的 nitialize_param ...

  6. 吴恩达深度学习 反向传播(Back Propagation)公式推导技巧

    由于之前看的深度学习的知识都比较零散,补一下吴老师的课程希望能对这块有一个比较完整的认识.课程分为5个部分(粗体部分为已经看过的): 神经网络和深度学习 改善深层神经网络:超参数调试.正则化以及优化 ...

  7. 吴恩达深度学习笔记(deeplearning.ai)之卷积神经网络(二)

    经典网络 LeNet-5 AlexNet VGG Ng介绍了上述三个在计算机视觉中的经典网络.网络深度逐渐增加,训练的参数数量也骤增.AlexNet大约6000万参数,VGG大约上亿参数. 从中我们可 ...

  8. 吴恩达深度学习笔记(deeplearning.ai)之循环神经网络(RNN)(三)

    1. 导读 本节内容介绍普通RNN的弊端,从而引入各种变体RNN,主要讲述GRU与LSTM的工作原理. 事先声明,本人采用ng在课堂上所使用的符号系统,与某些学术文献上的命名有所不同,不过核心思想都是 ...

  9. 吴恩达深度学习笔记(八) —— ResNets残差网络

    (很好的博客:残差网络ResNet笔记) 主要内容: 一.深层神经网络的优点和缺陷 二.残差网络的引入 三.残差网络的可行性 四.identity block 和 convolutional bloc ...

随机推荐

  1. 为什么选择.NETCore

     为什么选择.NETCore? 学习新的开发框架是一项巨大的投资.您需要学习如何在新框架中编写,构建,测试,部署和维护应用程序.作为开发人员,有许多框架可供选择,很难知道什么是最适合的.即使您正在使用 ...

  2. WPF外包团队:2019 WPF数据监控系统案例演示

    项目版权均为客户所有,如有WPF项目外包欢迎联系我们. QQ:372900288 TEL:13911652504 WX:Liuxiang0884

  3. LInux学习之路

    linux 简单操作命令 cd 进入目录 ls 查看 ll详细查看 man ls -- help touch mkdir find 正则表达式 ? [] [a-z][0-9] {字符串,} {a..z ...

  4. LeetCode 223. 矩形面积(Rectangle Area)

    223. 矩形面积 223. Rectangle Area 题目描述 在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积. 每个矩形由其左下顶点和右上顶点坐标表示,如图所示. LeetCode2 ...

  5. Java大厂笔试&&面试集合大全目录

    面试技巧 掌握面试技巧,提升自身软实力! HR面试都会问什么问题?(上) HR面试都会问什么问题?(下) 作为一技术人员,面试前都需要做哪些准备? 面试题 Java各个阶段面试题,帮你提升自我,拿到高 ...

  6. 2019秋季PAT甲级_C++题解

    2019 秋季 PAT (Advanced Level) C++题解 考试拿到了满分但受考场状态和知识水平所限可能方法不够简洁,此处保留记录,仍需多加学习.备考总结(笔记目录)在这里 7-1 Fore ...

  7. Zabbix案例实践|Zabbix屏蔽告警

    近期项目中,客户要求在凌晨00:00到02:00的CPU屏蔽虚拟化监控上ESXI的红色告警,红色告警是由于某台vmCPU利用率过高而产生的.做法如下:1. 找到红色告警的触发器,通过触发器找到监控项, ...

  8. Delphi 10 Seattle plus 新特性——System.JSON.Builders

    { 全能中间件 —— 简单.高效.稳定.安全的三层中间件 1.支持 多账套多数据库,包括SQLite, MySQL, SQL Server, Oracle, PostgreSQL, DB2, SQL ...

  9. flask框架(二)——flask4剑客、flask配置文件的4种方式

    之前学习的Django有必备三板斧:render,HttpResponse,redirect,JsonResponse 在flask也有,但是有些不同 一.Flask4剑客 1.直接返回字符串(ret ...

  10. kubernetes 实践二:kubectl命令使用

    这里记录kubernetes学习和使用过程中的内容. CentOS7 k8s-1.13 flanneld-0.10 docker-18.06 etcd-3.3 kubectl用法概述 kubectl是 ...