提交 29892371 authored 作者: Pascal Lamblin's avatar Pascal Lamblin

Merge.

...@@ -872,10 +872,6 @@ class CAReduce(Op): ...@@ -872,10 +872,6 @@ class CAReduce(Op):
self.axis = tuple(self.axis) self.axis = tuple(self.axis)
self.ufunc = numpy.frompyfunc(scalar_op.impl, 2, 1) self.ufunc = numpy.frompyfunc(scalar_op.impl, 2, 1)
# CAReduce output views input when reducing scalars
# See ticket #417: http://www.pylearn.org/theano/trac/ticket/417
self.view_map = {0: [0]}
def _output_dtype(self, input_dtype): def _output_dtype(self, input_dtype):
return input_dtype return input_dtype
......
...@@ -164,8 +164,11 @@ class test_CAReduce(unittest.TestCase): ...@@ -164,8 +164,11 @@ class test_CAReduce(unittest.TestCase):
((5, 6), ()), ((5, 6), ()),
((2, 3, 4, 5), (0, 1, 3)), ((2, 3, 4, 5), (0, 1, 3)),
((2, 3, 4, 5), (-2, -3)), ((2, 3, 4, 5), (-2, -3)),
((5, 0), None),
((5, 0), (0, )), ((5, 0), (0, )),
((5, 0), (1, )), ((5, 0), (1, )),
((5, 0), ()),
((), None),
((), ())]: ((), ())]:
x = TensorType('float64', [(entry == 1) for entry in xsh])('x') x = TensorType('float64', [(entry == 1) for entry in xsh])('x')
e = CAReduce(scalar_op, axis = tosum)(x) e = CAReduce(scalar_op, axis = tosum)(x)
......
...@@ -2,10 +2,11 @@ import unittest ...@@ -2,10 +2,11 @@ import unittest
import numpy import numpy
from theano import function,config from theano import function, config
from theano import scalar
import theano.tensor as tensor import theano.tensor as tensor
#from theano.tensor import matrix,max_and_argmax,MaaxAndArgmax,neg #from theano.tensor import matrix,max_and_argmax,MaaxAndArgmax,neg
from theano.tensor.elemwise import CAReduce from theano.tensor.elemwise import CAReduce, Elemwise
from theano.tests import unittest_tools as utt from theano.tests import unittest_tools as utt
...@@ -44,7 +45,8 @@ class T_min_max(unittest.TestCase): ...@@ -44,7 +45,8 @@ class T_min_max(unittest.TestCase):
f = function([n],tensor.max(-n,0)) f = function([n],tensor.max(-n,0))
topo = f.maker.env.toposort() topo = f.maker.env.toposort()
assert len(topo)==2 assert len(topo)==2
assert topo[0].op==tensor.neg assert isinstance(topo[0].op, Elemwise)
assert isinstance(topo[0].op.scalar_op, scalar.Neg)
assert isinstance(topo[1].op,CAReduce) assert isinstance(topo[1].op,CAReduce)
f(data) f(data)
...@@ -52,7 +54,8 @@ class T_min_max(unittest.TestCase): ...@@ -52,7 +54,8 @@ class T_min_max(unittest.TestCase):
topo = f.maker.env.toposort() topo = f.maker.env.toposort()
assert len(topo)==2 assert len(topo)==2
assert isinstance(topo[0].op,CAReduce) assert isinstance(topo[0].op,CAReduce)
assert topo[1].op==tensor.neg assert isinstance(topo[1].op, Elemwise)
assert isinstance(topo[1].op.scalar_op, scalar.Neg)
f(data) f(data)
f = function([n],-tensor.max(-n,0)) f = function([n],-tensor.max(-n,0))
...@@ -76,13 +79,15 @@ class T_min_max(unittest.TestCase): ...@@ -76,13 +79,15 @@ class T_min_max(unittest.TestCase):
topo = f.maker.env.toposort() topo = f.maker.env.toposort()
assert len(topo)==2 assert len(topo)==2
assert isinstance(topo[0].op,CAReduce)#max assert isinstance(topo[0].op,CAReduce)#max
assert topo[1].op==tensor.neg assert isinstance(topo[1].op, Elemwise)
assert isinstance(topo[1].op.scalar_op, scalar.Neg)
f(data) f(data)
f = function([n],-tensor.min(n,0)) f = function([n],-tensor.min(n,0))
topo = f.maker.env.toposort() topo = f.maker.env.toposort()
assert len(topo)==2 assert len(topo)==2
assert topo[0].op==tensor.neg assert isinstance(topo[0].op, Elemwise)
assert isinstance(topo[0].op.scalar_op, scalar.Neg)
assert isinstance(topo[1].op,CAReduce)#max assert isinstance(topo[1].op,CAReduce)#max
f(data) f(data)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论