深度摸鱼入门

import numpy as np
a=np.array([1,2,3,4])
print(a)
[1 2 3 4]
import time
# this code is to compare the vectorization and for-loops
a=np.random.rand(1000000)
b=np.random.rand(1000000)

tic=time.time()
c=np.dot(a,b) # dian cheng in Chinese
toc=time.time()

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

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

print(c)
print("For loop:"+str(1000*(toc-tic))+"ms")
# and we know how fast the vectorization can be than the for-loops
249857.1312811841
Vectorized version:1.0018348693847656ms
249857.13128117658
For loop:375.45204162597656ms

由此开始深度学习之路:

这是我的第一个jupyter note,是在用过matlab的mlx之后才开始用这个超级方便的工具,在开始之前,我希望读者可以先做到这几步:

第一步用jupyter notebook,先配好自动补全的环境:Jupyter Notebook 代码自动补全功能设置 - 知乎 (zhihu.com)

第二步学会写公式,在线LaTeX公式编辑器-编辑器 (latexlive.com)

第三步学会用英文表达变量名,百度翻译-200种语言互译、沟通全世界! (baidu.com)

好,我们下面接着向量化与for-loops的比较:

u=Avui=jAijvj

如果写成for-loops

u=np.zeros(rows,colomns)
for i in range(rows):
    for j in range(colomns):
        u[i]+=A[i][j]*v[j]

但如果写成vectorization,这样就可以了

u=np.dot(A,v)

又比如这个

v=[v1vn]

你想得到,

u=[ev1evn]

如果你想用for-loops的话就只能这样,但我们可以直接用numpy的内置函数

u=np.zeros((n,1))
for i in range(n):
	u[i]=math.exp(v[i])

这样显然更快:

import numpy as np
u=np.exp(v)

这些向量化的函数都会大大加快我们计算的速度,注意下面的v是vector的意思:

np.log(v) np.abs(v) np.maximun(v,0) v**x 1/v
lnx 绝对值 同零相比最大的绝对值 v^2 倒数

z(i)=wTx(i)+b(i)x(i)iXn×m,Zn×mwn×1,wT1×n,b1×mZ=wTX+b(1)[z(1)z(2)z(m)]=wTX+[b(1)b(2)b(m)](2)=[wTx(1)+b(1)wTx(2)+b(2)wTx(m)+b(m)](pythonb1×mpythonbroadcasting)forloops:

z=np.dot(w.T,X)+b
# 这里的numpy库中的点乘意思,w.T相当于np.transpose(w)即矩阵转置,b是一个常数

Broadcasting example

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)
[[ 56.    0.    4.4  68. ]
 [  1.2 104.   52.    8. ]
 [  1.8 135.   99.    0.9]]
cal=A.sum(axis=0)# means you want to sum vertically,else axis=1 is horizontally
print(cal)
[ 59.  239.  155.4  76.9]
percentage=100*A/cal.reshape(1,4) #如果不知道矩阵类型这是个好办法去保证
print(percentage)
[[94.91525424  0.          2.83140283 88.42652796]
 [ 2.03389831 43.51464435 33.46203346 10.40312094]
 [ 3.05084746 56.48535565 63.70656371  1.17035111]]
posted @   Link_kingdom  阅读(59)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示