Python深度学习 学习笔记3

一、神经网络的“齿轮”:张量运算

1.dot 点积运算      relu(x) 是max(x,0)

#W,b,input均为2D张量
output=relu(dot(W,input)+b)

2.张量点积

import numpy as np
z = np.dot(x,y)

两个向量之间的点积是一个标量,矩阵和向量点积返回向量,矩阵和矩阵点积返回矩阵。

#两矩阵
def naive_matrix_dot(x,y):
    assert len(x.shape) == 2
    assert len(y.shape) == 2
    assert x.shape[1] == y.shape[0]

    z=np.zeros((x.shape[0],y.shape[1]))
    for i in range(x.shape[0]):
        for j in range(y.shape[1]):
            row_x = x[i,:]
            row_y = y[:,j]
            z[i,j] = naive_vector_dot(row_x,column_y)
    return z

3.张量变形

在神经网络预处理时:

train_images = train_images_reshape(6000,28*28)

#改变行和列
>>>x=np.array([[0.,1.],
              [2.,3.],
              [4.,5.]])
>>>print(x.shape)
(3,2)

>>>x=x.reshape((6,1))
>>>print(x)
array([[0.],
      [1.],
      [2.],
      [3.],
      [4.],
      [5.]])
>>>x=x.reshape((2,3))
>>>x
array([[0.,1.,2.],
       [3.,4.,5.]])

#转置
x=np.transpose(x)
                

二、神经网络的“引擎”:基于梯度的优化

1.每个神经层都用下述方法对输入数据进行变换:

output = relu(dot(W,input) + b)

2.一开始权重矩阵取较小随机值(随机初始化),然后根据反馈信号逐渐调节权重(训练,也就是机器学习中的学习)

3.利用网络中所有运算都可微(可以被求导),计算损失相对于网络系数的梯度,然后向梯度的反方向改变系数,从而使损失降低。

4.动量方法找到全局最小点。

2022/7/6

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值