0
私は簡単な質問があります。私は、なぜgpu(cuda)とcpuによって与えられたネットワーク応答に大きな違いがあるのかを理解しようとしています。ここでは、最小限の例です:トーチ:GPU/CPU応答の違い
require 'torch'
require 'nn'
require 'cunn'
require 'paths'
-- a small convnet
net = nn.Sequential()
net:add(nn.SpatialConvolution(3,16, 3,3))
net:add(nn.SpatialConvolution(16,8, 3,3))
net:add(nn.SpatialConvolution(8,1, 3,3))
-- randomize weights
local w = net:getParameters()
w:copy(torch.Tensor(w:nElement()):uniform(-1000,1000))
-- random input
x = torch.Tensor(3, 10, 10):uniform(-1,1)
-- network on gpu
net:cuda()
y = net:forward(x:cuda())
print(y)
-- network on cpu
y2 = net:clone():double():forward(x)
print(y2)
-- check difference (typically ~10000)
print("Mean Abs. Diff:")
print(torch.abs(y2-y:double()):sum()/y2:nElement())
は、私がここで間違って何かをやっている、またはそれは、CPU/GPU計算の間にいくつかの期待の違いは?