吴恩达 深度学习 2021版 作业

article/2025/6/9 19:47:12

练习

  • 神经网络与深度学习
    • 神经网络基础
      • Numpy基础
        • 1-使用numpy构建基本函数

神经网络与深度学习

神经网络基础

Numpy基础

学习目标:

  1. 使用numpy,包括函数调用及向量矩阵运算
  2. 广播
  3. 向量化代码

1-使用numpy构建基本函数

1.1- sigmoid function和np.exp()
在使用np.exp()之前,你将使用math.exp()实现Sigmoid函数。然后,你将知道为什么np.exp()比math.exp()更可取。

练习:构建一个返回实数x的sigmoid的函数。将math.exp(x)用于指数函数。

提示:
有时也称在这里插入图片描述
为逻辑函数。它是一种非线性函数,即可用于机器学习(逻辑回归),也能用于深度学习。

要引用特定程序包的函数,可以使用package_name.function()对其进行调用。运行下面的代码查看带有math.exp()的示例。

但是在深度学习中很少使用math库,是因为在深度学习中更多的使用矩阵与向量,故numpy更加实用

import math
def basic_sigmoid(x):s = 1/(1 + math.exp(-x))return s
basic_sigmoid(3)

0.9525741268224334

import numpy as np
x = np.array([1,2,3])
print(1 / (1 + np.exp(-x)))

[0.73105858 0.88079708 0.95257413]

import numpy as np
def sigmoid(x):s = 1/(1 + np.exp(-x))return s
x = np.array([1,2,3])
sigmoid(x)

array([0.73105858, 0.88079708, 0.95257413])

1.2- Sigmoid gradient
正如你在教程中所看到的,我们需要计算梯度来使用反向传播优化损失函数。 让我们开始编写第一个梯度函数吧。

练习:创建函数sigmoid_grad()计算sigmoid函数相对于其输入x的梯度。 公式为:在这里插入图片描述

我们通常分两步编写此函数代码:
1.将s设为x的sigmoid。 你可能会发现sigmoid(x)函数很方便。
2.计算在这里插入图片描述

def sigmoid_derivative(x):s = sigmoid(x)ds = s * (1 - s)return ds
x = np.array([1,2,3])
sigmoid_derivative(x)

array([0.19661193, 0.10499359, 0.04517666])

1.3- 重塑数组
深度学习中两个常用的numpy函数是np.shape和np.reshape()。
-X.shape用于获取矩阵/向量X的shape(维度)。
-X.reshape(…)用于将X重塑为其他尺寸。

例如,在计算机科学中,图像由shape为在这里插入图片描述

的3D数组表示。但是,当你读取图像作为算法的输入时,会将其转换为维度为在这里插入图片描述
的向量。换句话说,将3D阵列“展开”或重塑为1D向量在这里插入图片描述
练习:实现image2vector() ,该输入采用维度为(length, height, 3)的输入,并返回维度为(lengthheight3, 1)的向量。例如,如果你想将形为(a,b,c)的数组v重塑为维度为(a*b, 3)的向量,则可以执行以下操作:
v = v.reshape((v.shape[0]*v.shape[1], v.shape[2]))
#v.shape[0] = a ; v.shape[1] = b ; v.shape[2] = c

def image2vector(image):v = image.reshape(image.shape[0] * image.shape[1] * image.shape[2], 1)return v
image = np.array([[[ 0.67826139,  0.29380381],[ 0.90714982,  0.52835647],[ 0.4215251 ,  0.45017551]],[[ 0.92814219,  0.96677647],[ 0.85304703,  0.52351845],[ 0.19981397,  0.27417313]],[[ 0.60659855,  0.00533165],[ 0.10820313,  0.49978937],[ 0.34144279,  0.94630077]]])print ("image2vector(image) = " + str(image2vector(image)))

image2vector(image) = [[0.67826139]
[0.29380381]
[0.90714982]
[0.52835647]
[0.4215251 ]
[0.45017551]
[0.92814219]
[0.96677647]
[0.85304703]
[0.52351845]
[0.19981397]
[0.27417313]
[0.60659855]
[0.00533165]
[0.10820313]
[0.49978937]
[0.34144279]
[0.94630077]]

1.4- 行标准化
我们在机器学习和深度学习中使用的另一种常见技术是对数据进行标准化。 由于归一化后梯度下降的收敛速度更快,通常会表现出更好的效果。 通过归一化,也就是将x更改为(将x的每个行向量除以其范数)。(化为单位向量)
在这里插入图片描述
练习: 执行 normalizeRows()来标准化矩阵的行。 将此函数应用于输入矩阵x之后,x的每一行应为单位长度(即长度为1)向量。

def normalizeRows(x):x_norm = np.linalg.norm(x, axis = 1, keepdims = True)x = x / x_normreturn x
x = np.array([[0, 3, 4],[10, 12, 13]])
print("normalizeRows(x) = " + str(normalizeRows(x)))

normalizeRows(x) = [[0. 0.6 0.8 ]
[0.49206783 0.5904814 0.63968818]]

行标准化: x_norm = np.linalg.norm(x, axis = 1, keepdims = True)
x = x / x_norm

1.5- 广播和softmax函数
练习: 使用numpy实现softmax函数。 你可以将softmax理解为算法需要对两个或多个类进行分类时使用的标准化函数。 你将在本专业的第二门课中了解有关softmax的更多信息。
操作指南:
在这里插入图片描述

#首先算出每行元素之和(得n行1列矩阵),再将原矩阵与该矩阵相除
def softmax(x):xExp = np.exp(x)xSum = np.sum(xExp, axis = 1, keepdims = True)s = xExp / xSumreturn s
x = np.array([[9, 2, 5, 0, 0],[7, 5, 0, 0 ,0]])
print("softmax(x) = " + str(softmax(x)))

总结:

  1. -np.exp(x)适用于任何np.array x并将指数函数应用于每个坐标
  2. sigmoid函数及其梯度
  3. image2vector通常用于深度学习
  4. np.reshape被广泛使用。 保持矩阵/向量尺寸不变有助于我们消除许多错误。
  5. numpy具有高效的内置功能
  6. broadcasting非常有用

2-向量化
2.1实现L1和L2损失函数
练习: 实现L1损失函数的Numpy向量化版本。 我们会发现函数abs(x)(x的绝对值)很有用

提示:
-损失函数用于评估模型的性能。 损失越大,预测(
) 与真实值(在这里插入图片描述)的差异也就越大。 在深度学习中,我们使用诸如Gradient Descent之类的优化算法来训练模型并最大程度地降低成本。
-L1损失函数定义为
在这里插入图片描述


http://chatgpt.dhexx.cn/article/TTic8ajG.shtml

相关文章

吴恩达深度学习

最近在学习吴恩达老师的深度学习,边学边随手记一些东西,留个简单的笔记,以便日后复习。 第一周 结构化数据:每个特征都有清晰的定义 非结构化数据:音频、图像、文本等 大规模的神经网络大规模的带标签数据 第一周习题…

吴恩达《深度学习专项》笔记(十二):目标检测与语义分割简介 (YOLO, U-Net)

这节课中,我们要学习计算机视觉中最重要的任务之一——目标检测任务。我们会先认识目标定位和关键点检测这两个比较简单的任务,慢慢过度到目标检测任务。之后,我们会详细学习目标检测的经典算法YOLO。最后,我们会稍微认识一下语义…

吴恩达:28张图全解深度学习知识

吴恩达在推特上展示了一份由 TessFerrandez 完成的深度学习专项课程信息图,这套信息图优美地记录了深度学习课程的知识与亮点。因此它不仅仅适合初学者了解深度学习,还适合机器学习从业者和研究者复习基本概念。喜欢记得关注、收藏、点赞。 这不仅仅是一…

吴恩达深度学习深度学习概述以及优化

深度学习概述及优化 1、深度学习概述2、神经网络基础之逻辑回归3、深层神经网络4、深度学习实用层面4.1 训练集、验证集、测试集4.2 偏差、方差4.3 L1、L2正则化4.4 归一化处理4.5 Dropout4.6 其他正则化方法4.7 梯度消失和爆炸 1、深度学习概述 在之前的吴恩达机器学习课程中…

深度学习-吴恩达:一、神经网络和深度学习

文章目录 1、what is a Neural Network?(什么是神经网络)2、Supervised Learning with Neural Networks (监督学习)3、为什么深度学习会兴起?第一周测验测验题答案 1、what is a Neural Network?(什么是神…

IOS开发视频教程《保卫萝卜》-任亮-专题视频课程

IOS开发视频教程《保卫萝卜》—3411人已学习 课程介绍 《保卫萝卜CarrotFantasy》是一款由开发商“凯罗天下”开发的超萌塔防小。14种防御塔保卫萝卜战怪兽。保卫萝卜是一款制作精美的超萌塔防游戏,游戏含有丰富的关卡和主题包,拥有各自风格特色…

ios游戏开发 Sprite Kit教程:初学者 1

注:本文译自Sprite Kit Tutorial for Beginners 目录 Sprite Kit的优点和缺点Sprite Kit vs Cocos2D-iPhone vs Cocos2D-X vs UnityHello, Sprite Kit!横屏显示移动怪兽发射炮弹碰撞检测: 概述碰撞检测: 实现收尾何去何从? 在iOS 7中内置了一个新的Sprite Kit框架…

HTML5游戏开发高级教程 | Lynda教程 中文字幕

HTML5游戏开发高级教程 | Lynda教程 中文字幕 Advanced HTML5 Game Development 课程ID: 597988 时长: 2.3小时 所属类别:Html 全部游戏开发课程 了解如何使用HTML5创建交互式,动态和丰富多彩的游戏 在本课程中,学习如何充分利用所有HTML5功能来创建…

ios游戏开发 Sprite Kit教程:初学者 2

注:本文译自Sprite Kit Tutorial for Beginners 目录 Sprite Kit的优点和缺点Sprite Kit vs Cocos2D-iPhone vs Cocos2D-X vs UnityHello, Sprite Kit!横屏显示移动怪兽发射炮弹碰撞检测: 概述碰撞检测: 实现收尾何去何从? 横屏显示 首先,在Project Na…

【游戏开发教程】Unity iOS平台接入微信SDK,实现微信登录等功能(教程 | 流程讲解)

文章目录 一、前言二、流程1、申请开发者账号2、创建应用3、下载SDK4、导入到Unity中5、编写Objective-C代码5.1、CustomAppController.mm5.2、WXApiManager.h5.3、WXApiManager.mm5.4、注册回调对象5.5、封装初始化接口5.6、封装登录接口5.7、其他接口封装 6、XCodeAPI7、关于…

iOS开发知识概览

1、学习ios开发的知识概览,经常会认为ios开发会学那些知识,如何把断断续续的知识连接起来, 这就让你有了全局的了解,如何去计划和安排自己的学习计划,有了全局的知识体系。 原文来自:https://github.com/sh…

IOS 开发之逆向分析

在逆向过程中很多时候需要分析 APP 和 Web 端数据交互的内容那么最简单的方式即是抓包网络分析,而使用 Charles、Tcpdump 也是逆袭分析最基本的手段。本文以 Charles 为例来介绍网络相关的内容。 Charles 是在 Mac 下常用的网络封包截取工具,在做 移动开…

ios游戏开发

知识系统 英文教程网站 http://www.csdn.net/article/2012-12-20/2813035-game-dev-guide 开发类库 http://www.csdn.net/article/2012-11-07/2811587-pop-ios-dev-library

芒果iOS开发之Swift教程01-Swift基础

【主要内容】 1.关于Swift 2.Hello World 3.常量和变量 4.类型标注 5.常量和变量的命名 6. 输出常量和变量 7.注释 8.分号 一、关于Swift 苹果在2014年WWDC(苹果开发者大会)发布了Swift,用于编写iOS,Mac OS X和watchOS…

ios教程,用pc开发ios游戏

原文是Thomas Henshell对手机游戏Catch the Monkey的开发总结,由Lyra翻译。 传智播客今年6月开始ios培训(http://ios.itcast.cn)的课程;相对于一些应用,我本人对ios游戏开发更感兴趣,这些开发总结并不拘泥…

RPG游戏开发基础教程

RPG游戏开发基础教程 第一步 下载RPG Maker 开发工具包 1.RPG Maker 是什么?RPG Maker 是由Enterbrain公司推出的RPG制作工具。 中文译名为RPG制作大师。 熟悉的人喜欢简称为RM。 根据发行版本的不同,RM在国内流行的版本有4款: 2.附上资源下载地址:点击进入网盘下载 3.关于…

ios开发快速入门教程

1.高级C语言、C语言 C语言是iOS开发的语言(Objective-C)基础,在iOS开发培训的课程中也会涉及到。iOS开发培训需要强调的是并不是要同学们都要精通C/C,而是要掌握iOS开发中要用的的C/C的核心内容。 2.Objective-C语言 Objective-C是iOS开发的标准语言&…

苹果游戏开发教程之如何使用 SpriteKit 和 GameplayKit 制作你的街机手机游戏

项目运行效果 什么是GameplayKit GameplayKit 是由 Apple 开发的框架,在 iOS 9 和 macOS X.11 中引入,它提供了许多类型游戏中常见的基础设施。 它让您专注于游戏玩法和游戏规则,以最大限度地减少意大利面条式代码的编写,并且只需要基于 Objective-C 或 Swift 的界面。 使…

ios 手游SDK 开发教程

前言: 各位同学大家好 ,有一段时间没有见面了。 具体多久我也不清楚了, 最近在学习iOS 手游sdk 的开发 所以就想着写完 写一份教程分享给大家, 本人之前一直都是做安卓开发的 安卓 app和安卓手游SDK 开的都会。 需要用到的三方库…

数据分析:大数据时代的必备技能之EXCEL

文章目录 数据分析价值与数据分析思维一、数据分析概述1.什么是数据2.理解数据3.什么是数据分析3. 数据分析的步骤 二、数据分析价值1.定义和组成2. 商业价值案例--豆浆 三、数据分析思维1. 核心思维方式(1)、结构化分析思维(2)、公式化分析思维(3)、业务化分析思维 数据预处理…