我是深度学习的初学者。我知道在常规神经网络中,人们在激活之前会使用批处理规范,这将减少对良好的权重初始化的依赖。我想知道当我使用它时是否会对RNN / lstm RNN起到同样的作用。有人有经验吗?谢谢。
我正在尝试如何在numba中使用cuda。但是,我遇到了与期望不同的事情。这是我的代码
from numba import cuda
@cuda.jit
def matmul(A, B, C):
"""Perform square matrix multiplication of C = A * B
"""
d=cuda.local.array((3,3),dtype=numba.float64)
i, j = cuda.grid(2)
if i < C.shape[0] and j < C.shape[1]:
tmp = 0.
for k in range(A.shape[1]):
tmp += A[i, k] * B[k, j]
C[i, j] = tmp
Run Code Online (Sandbox Code Playgroud)
这是我为使用numba.cuda进行测试而自定义的矩阵函数。在运行测试之前,我还通过以下代码加载了数组:
import numpy as np
a=np.random.rand(2000,2000)
b=np.random.rand(2000,2000)
c=np.empty((2000,2000))
a1=cuda.to_device(a)
b1=cuda.to_device(b)
c1=cuda.to_device(c)
Run Code Online (Sandbox Code Playgroud)
然后,我将以下代码用于实验:
from time import time
count =0
start=time()
for i in range(2000):
matmul[(256,256),(16,16)](a1,b1,c1)
count +=1
print(count)
Run Code Online (Sandbox Code Playgroud)
for循环在第一个1028年运行非常快。但是在1028年之后它运行非常缓慢,究竟是什么原因造成的,以及如何解决它。顺便说一下,我在win10上运行。 …