📜  为什么在神经网络问题中不首选 For 循环?

📅  最后修改于: 2022-05-13 01:54:40.955000             🧑  作者: Mango

为什么在神经网络问题中不首选 For 循环?

For 循环需要很长时间来完成迭代,在 ML 实践中,我们必须优化时间,以便我们可以使用 for 循环。但是你一定想知道用什么?别担心,我们将在下面的部分讨论这个问题。

如何摆脱机器学习或神经网络中的循环?

解决方案是矢量化。现在问题来了,什么是矢量化?向量化是将算法从一次对单个值进行操作转换为一次对一组值(向量)进行操作的过程。现代 CPU 直接支持将单个指令应用于多个数据 (SIMD) 的向量运算。

为什么要使用矢量化而不是 for 循环?

矢量化用于加速Python代码。使用 np.函数可以帮助有效地最小化代码的运行时间。让我们看下面的示例以更好地理解。

例子:

import numpy as np
import time
  
  
a = np.array([1, 2, 3, 4])
  
# there will be 100000 training data
a = np.random.rand(100000)
b = np.random.rand(100000)
  
# FOR VECTORIZTION
# Measure current time
time1 = time.time()
  
# computing
c = np.dot(a, b)
  
# Measure current time
time2 = time.time()
  
# printing time taken for above calculation
print("vectorized form time taken"+ "\t"+str(1000*(time2-time1))+"ms")
   
# FOR for loop
# measure current time
time3 = time.time()
c = 0
  
# computing 
for i in range(100000):
  c+= a[i]*b[i]
  
# measure current time
time4 = time.time()
  
# printing time taken for above calculation
print("for loop time taken "+"\t\t"+str(1000*(time4-time3))+"ms")

输出:

vectorized form time taken    0.43511390686035156ms
for loop time taken         216.04394912719727ms