吴恩达深度学习:神经网络基础(第二周)

本文介绍了二分类问题的基本概念,包括神经网络输入处理、逻辑回归的线性和非线性预测,以及损失函数和梯度下降算法。重点讲解了如何利用链式法则进行梯度计算,并展示了向量化操作在效率提升上的作用。此外,还涵盖了Python/Numpy中的常见陷阱和Logistic回归的成本函数推导。
摘要由CSDN通过智能技术生成

1.二分类

二分类就是输出只有{0,1}两个离散值,以图像处理问题为例。一般来说,彩色图片包含RGB三个通道。假设一个图片的尺寸是(64, 64, 3),那么神经网络的输入X的维度就是64*64*3=12288。如果训练样本共有m张图片,那么整个训练样本的维度是(12288,m)。

2.Logistic Regression

逻辑回归的线性预测输出:

逻辑回归的非线性预测输出:

Logistic逻辑回归的凸损失函数表示为:

m个样本的损失函数为:

 

3.梯度下降

4.导数

5.计算图

整个神经网络的训练过程实际包含了两个过程:正向传播和反向传播。正向传播是从输入到输出,由神经网络计算出预测值;反向传播是从输出到输入,对参数w和b计算梯度的过程。

6.计算图的导数计算

链式法则

7.Logistic回归的梯度下降算法

梯度下降算法可表示为:

m个样本的梯度表达式:

 8.向量化

向量化可以节省大量运行时间:

import time

a = np.random.rand(10000000)
b = np.random.rand(10000000)

tic = time.time()
c = np.dot(a, b)
toc =  time.time()

print(c)
print("Vectorized version:" + str(1000*(toc - tic)) + "ms")

c = 0
tic = time.time()
for i in range(10000000):
    c += a[i]*b[i]
toc = time.time()

print(c)
print("For loop:" + str(1000*(toc - tic)) + "ms")

9.向量化logistic回归的梯度输出

Logistic回归损失函数:

反向传播,计算损失函数对参数w和b的偏导数(链式法则):

经过每次迭代后,更新参数w和b:

10.python中的广播

神经网络中一般用到python广播的是:z=wx+b在加参数b的时候会吧b扩展成一个和wx对应的矩阵。

例子:

import numpy as np
A = np.array([[56.0, 0.0, 4.4, 68.0],
             [1.2, 104.0, 52.0, 8.0],
             [1.8, 135.0, 99.0, 0.9]])
print(A)

cal = A.sum(axis=0)
print(cal)

percentage = 100*A/cal.reshape(1, 4)
print(percentage)

11.python/numpy中容易出现bug的点

不要使用a = np.random.randn(5)表示秩为1的矩阵形状不确定,可以使用a = np.random.randn(5,1)或a = np.random.randn(1,5)来确定矩阵的形状。同时,也可以使用reshape方法或者assert()声明来确定矩阵的形状,例如:assert(a.shape == (5,1))。

例子:

import numpy as np

a = np.random.randn(5)
print(a)

print(a.shape)

print(a.T)

print(np.dot(a,a.T))

a = np.random.randn(5,1)
print(a)

print(a.T)

print(np.dot(a,a.T))

12.Logistic回归cost function推导

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值