05/28/2022学习笔记(神经网络

神经网络

入门阅读资料

理解正向传播:神经网络15分钟入门!足够通俗易懂了吧 - 知乎

理解反向传播:神经网络15分钟入门!——反向传播到底是怎么传播的? - 知乎

反向传播是固定X然后从末端传回去,根据神经元特性构造一个函数,在这个函数里使用优化算法优化W矩阵和b向量(在反向传播的时候,它们是作为变量的)用类似梯度下降算法来找到使得错误项最小的W和b。

动手撸一个小神经网络:神经网络15分钟入门!使用python从零开始写一个两层神经网络 - 知乎

 反向传播的时候对维度进行了还原,举例子说也就是从dout的N*4——》原来w的维度

Python知识补充:

如何使用元组:

四、Python的元组_zhaopeng01zp的博客-CSDN博客_python元组有几个元素

如何使用numpy的sum函数:

python 中 np.sum()函数 通俗易懂理解!_rifengxxc的博客-CSDN博客_np.sum python

这个链接里详细解释了axis的用法,axis = 某个轴也可以理解为移除某个轴,等于把某个轴上的数据“拍扁”,也就是求和,这样比较好理解,举个例子:

>>> import numpy as np
>>> a = np.array([[[1,2,3,2],[1,2,3,1],[2,3,4,1]],[[1,0,2,0],[2,1,2,0],[2,1,1,1]]])
>>> a
array([[[1, 2, 3, 2],
        [1, 2, 3, 1],
        [2, 3, 4, 1]],
 
       [[1, 0, 2, 0],
        [2, 1, 2, 0],
        [2, 1, 1, 1]]])

# output为:

>>> a.sum(axis=0)
array([[2, 2, 5, 2],
       [3, 3, 5, 1],
       [4, 4, 5, 2]])
# 相当于把axis = 0给拍扁了,于是就相当于两个矩阵相乘,如果axis = 1,输出结果为

>>> a.sum(axis=1)
array([[ 4,  7, 10,  4],
       [ 5,  2,  5,  1]])
# 可以看出,axis = 1被拍扁了,于是就相当于进行了列求和
import numpy as np

a = np.array([[1, 2, 3, 2],
             [1, 2, 3, 1],
             [2, 3, 4, 1]])

b = np.sum(a, axis=0)
print(b)  # [4, 7, 10, 4]
#  对于单个矩阵来说,axis=0 就是列求和
b = np.sum(a, axis=1)
print(b)  # [8, 7, 10]
#  对于单个矩阵来说,axis=1 就是行求和
#  dimension 由排除掉axis的那个元素以后决定

 当keepdim = True时

import numpy as np

a = np.array([[1, 2, 3, 2],
             [1, 2, 3, 1],
             [2, 3, 4, 1]])

b = np.sum(a, axis=0, keepdims=True)
print(b)  # [[4, 7, 10, 4]]
#  对于单个矩阵来说,axis=0 就是列求和
b = np.sum(a, axis=1, keepdims=True)
print(b)  # [[8],
          # [7], 
          # [10]]
          
#  对于单个矩阵来说,axis=1 就是行求和
#  dimension 由排除掉axis的那个元素以后决定

numpy max 也可以用一样的原理:

array1= [[0  1  2  3]
         [4  5  6  7]
         [8  9 10 11]]
array1[0, :] = [0 1 2 3]
array1[1, :] = [4 5 6 7]
array1[2, :] = [8 9 10 11]
np.max(array1, axis=0) = [8 9 10 11]
array1[:, 0] = [0 4 8]
array1[:, 1] = [1 5 9]
array1[:, 2] = [2 6 10]
array1[:, 3] = [3 7 11]
np.max(array1, axis=1) = [3 7 11]

np.maximum和np.max是不一样的:

a = np.array([[-1, 2, 3, 2],
             [1, 2, 3, 1],
             [2, -1, 4, 1]])
b = np.maximum(0, a)
print(b)

# max 函数输出:[[0 2 3 2]
            #  [1 2 3 1]
            #  [2 0 4 1]]

是把小于前面那个数字的数全部替换成那个数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值