提交 22583950 authored 作者: Frederic Bastien's avatar Frederic Bastien

fix conv3d import problem.

上级 34fa6b81
import numpy
import theano
import theano.tensor as T
import numpy as N
from theano.sandbox.cuda import cuda_available, cuda_enabled
from theano.sandbox.cuda.basic_ops import *
#from util import strutil
from .Conv3D import Conv3D
if cuda_available:
from theano.sandbox.cuda import CudaNdarrayType, float32_shared_constructor
from theano.gof import local_optimizer
from theano.sandbox.cuda.basic_ops import as_cuda_ndarray_variable, host_from_gpu, HostFromGpu
from theano.misc import strutil
from theano.tensor.nnet.Conv3D import Conv3D
from theano.sandbox.cuda.opt import register_opt
from theano.sandbox.cuda import CudaNdarrayType
class GpuConv3D(theano.Op):
""" GPU implementation of Conv3D """
......@@ -282,8 +282,8 @@ conv_rows_stack( float* img, float* kern, float* bias, float* out,
gpu_convd = GpuConv3D()
@theano.sandbox.cuda.opt.register_opt()
@theano.gof.opt.local_optimizer([])
@register_opt()
@local_optimizer([])
def local_gpu_conv3d(node):
if isinstance(node.op, Conv3D):
if numpy.any([i.owner and isinstance(i.owner.op, HostFromGpu) for i in node.inputs]):
......
import numpy
import theano
import theano.tensor as T
import numpy as N
from theano.sandbox.cuda import cuda_available, cuda_enabled
from theano.sandbox.cuda.basic_ops import *
#from util import strutil
from .ConvGrad3D import ConvGrad3D
from theano.gof import local_optimizer
from theano.sandbox.cuda.basic_ops import as_cuda_ndarray_variable
from theano.misc import strutil
from theano.tensor.nnet.ConvGrad3D import ConvGrad3D
from theano.sandbox.cuda.opt import register_opt
from theano.sandbox.cuda import CudaNdarrayType, HostFromGpu, host_from_gpu
class GpuConvGrad3D(theano.Op):
......@@ -43,7 +48,7 @@ class GpuConvGrad3D(theano.Op):
inputDur = V.shape[4]
dr, dc, dt = d
dCdW = N.zeros(WShape, dtype=V.dtype)
dCdW = numpy.zeros(WShape, dtype=V.dtype)
#block
for j in xrange(0,WShape[0]):
......@@ -259,7 +264,7 @@ if(!work_complete){
///////////// < /code generated by GpuConvGrad3D >
"""
return strutls.render_string(codeSource,locals())
return strutil.render_string(codeSource,locals())
def c_support_code_apply(self, node, nodename):
# This code is not sensitive to the ignore_border flag.
......@@ -333,8 +338,8 @@ convgrad_rows_stack( float* img, float* dCdH, float* dCdW,
gpu_conv_grad3d = GpuConvGrad3D()
@theano.sandbox.cuda.opt.register_opt()
@theano.gof.opt.local_optimizer([])
@register_opt()
@local_optimizer([])
def local_gpu_conv_gradd(node):
if isinstance(node.op, ConvGrad3D):
if numpy.any([i.owner and isinstance(i.owner.op, HostFromGpu) for i in node.inputs]):
......
import numpy as N
import numpy
import theano.tensor as T
#from util import strutil
from theano.misc import strutil
import theano
from .ConvTransp3D import ConvTransp3D
from theano.sandbox.cuda import cuda_available, cuda_enabled
from theano.sandbox.cuda.basic_ops import *
if cuda_available:
from theano.sandbox.cuda import CudaNdarrayType, float32_shared_constructor
from theano.tensor.nnet.ConvTransp3D import ConvTransp3D
from theano.gof import local_optimizer
from theano.sandbox.cuda.basic_ops import as_cuda_ndarray_variable
from theano.sandbox.cuda.opt import register_opt
from theano.sandbox.cuda import CudaNdarrayType, HostFromGpu, host_from_gpu
class GpuConvTransp3D(theano.Op):
......@@ -259,7 +261,7 @@ if(!work_complete){
}}}}}} // for fail
///////////// < /code generated by GpuConvTransp3D >
"""
return renderString(codeSource,locals())
return strutil.renderString(codeSource,locals())
def c_support_code_apply(self, node, nodename):
# This code is not sensitive to the ignore_border flag.
......@@ -317,7 +319,7 @@ conv_transp_rows_stack( float* H, float* kern, float* bias, float* R,
int tk = t - tc * dt;
if(tk < 0)
break;
//R[i,j,r,c,t] += N.dot(W[:,j,rk,ck,tk], H[i,:,rc,cc,tc] )
//R[i,j,r,c,t] += numpy.dot(W[:,j,rk,ck,tk], H[i,:,rc,cc,tc] )
for(int q=0;q<nkern;q++){
sum += kern[q*kern_stride_nkern+stack_id*kern_stride_stack+rk*kern_stride_row+ck*kern_stride_col+tk*kern_stride_frame]*
H[batch_id*H_stride_batch+q*H_stride_stack+rc*H_stride_row+cc*H_stride_col+tc*H_stride_frame];
......@@ -343,8 +345,8 @@ conv_transp_rows_stack( float* H, float* kern, float* bias, float* R,
gpu_conv_transpd = GpuConvTransp3D()
@theano.sandbox.cuda.opt.register_opt()
@theano.gof.opt.local_optimizer([])
@register_opt()
@local_optimizer([])
def local_gpu_conv_transpd(node):
if isinstance(node.op, ConvTransp3D):
if numpy.any([i.owner and isinstance(i.owner.op, HostFromGpu) for i in node.inputs]):
......@@ -390,7 +392,7 @@ def computeR(W,b,d,H,Rshape = None):
#print "video size: "+str((videoHeight, videoWidth, videoDur))
R = N.zeros( (batchSize, inputChannels, videoHeight,
R = numpy.zeros( (batchSize, inputChannels, videoHeight,
videoWidth, videoDur ) , dtype=H.dtype)
#R[i,j,r,c,t] = b_j + sum_{rc,rk | d \circ rc + rk = r} sum_{cc,ck | ...} sum_{tc,tk | ...} sum_k W[k, j, rk, ck, tk] * H[i,k,rc,cc,tc]
......@@ -404,10 +406,10 @@ def computeR(W,b,d,H,Rshape = None):
for t in xrange(0,videoDur):
R[i,j,r,c,t] = b[j]
ftc = max([0, int(N.ceil(float(t-filterDur +1 )/float(dt))) ])
fcc = max([0, int(N.ceil(float(c-filterWidth +1)/float(dc))) ])
ftc = max([0, int(numpy.ceil(float(t-filterDur +1 )/float(dt))) ])
fcc = max([0, int(numpy.ceil(float(c-filterWidth +1)/float(dc))) ])
rc = max([0, int(N.ceil(float(r-filterHeight+1)/float(dr))) ])
rc = max([0, int(numpy.ceil(float(r-filterHeight+1)/float(dr))) ])
while rc < outputHeight:
rk = r - rc * dr
if rk < 0:
......@@ -425,7 +427,7 @@ def computeR(W,b,d,H,Rshape = None):
if tk < 0:
break
R[i,j,r,c,t] += N.dot(W[:,j,rk,ck,tk], H[i,:,rc,cc,tc] )
R[i,j,r,c,t] += numpy.dot(W[:,j,rk,ck,tk], H[i,:,rc,cc,tc] )
tc += 1
"" #close loop over tc
......@@ -441,7 +443,3 @@ def computeR(W,b,d,H,Rshape = None):
"" #close loop over i
return R
from ops.Conv3D import *
from ops.ConvGrad3D import *
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论