提交 92147fa3 authored 作者: Frederic Bastien's avatar Frederic Bastien

implement the c_code for the new DeepCopyOp. That fix part of some error.

上级 0ee6b24f
...@@ -167,12 +167,35 @@ class DeepCopyOp(theano.gof.Op): ...@@ -167,12 +167,35 @@ class DeepCopyOp(theano.gof.Op):
def __init__(self): def __init__(self):
pass pass
def __str__(self):
return self.__class__.__name__
def make_node(self, x): def make_node(self, x):
return theano.gof.Apply(self, [x], [x.type()]) return theano.gof.Apply(self, [x], [x.type()])
def perform( self, node, args, outs): def perform( self, node, args, outs):
outs[0][0] = copy.deepcopy(args[0]) outs[0][0] = copy.deepcopy(args[0])
def c_code_cache_version(self):
return (1)
def c_code(self, node, name, inames, onames, sub):
iname = inames[0]
oname = onames[0]
fail = sub['fail']
return """
Py_XDECREF(%(oname)s);
%(oname)s = (PyArrayObject*)PyArray_NewCopy(%(iname)s,NPY_ANYORDER);
if (!%(oname)s)
{
PyErr_SetString(PyExc_ValueError, "DeepCopyOp: the copy failed!");
%(fail)s;
}
"""%locals()
deep_copy_op = DeepCopyOp() deep_copy_op = DeepCopyOp()
DUPLICATE = ['DUPLICATE'] # unique id object used as a placeholder for duplicate entries DUPLICATE = ['DUPLICATE'] # unique id object used as a placeholder for duplicate entries
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论