提交 24a63768 authored 作者: Razvan Pascanu's avatar Razvan Pascanu

addressed all issues given to my pull request

上级 a184bf73
...@@ -22,7 +22,7 @@ random = RandomStreams(seed=0xBAD5EED) ...@@ -22,7 +22,7 @@ random = RandomStreams(seed=0xBAD5EED)
"""Imitate the numpy.random symbol with a tensor.random one""" """Imitate the numpy.random symbol with a tensor.random one"""
from elemwise import \ from elemwise import \
DimShuffle, Elemwise, CAReduce, Any, All DimShuffle, Elemwise, CAReduce
import sharedvar # adds shared-variable constructors import sharedvar # adds shared-variable constructors
...@@ -51,11 +51,4 @@ def shared(*args, **kw): ...@@ -51,11 +51,4 @@ def shared(*args, **kw):
import nnet # used for softmax, sigmoid, etc. import nnet # used for softmax, sigmoid, etc.
def any(x, axis=None):
return Any(axis)(x)
def all(x, axis=None):
return All(axis)(x)
from tensor_grad import Rop, Lop, grad, numeric_grad, verify_grad from tensor_grad import Rop, Lop, grad, numeric_grad, verify_grad
...@@ -5531,8 +5531,17 @@ def tensordot(x, y=None, axes=2): ...@@ -5531,8 +5531,17 @@ def tensordot(x, y=None, axes=2):
#TODO: tensordot should be function as described in rst docs. #TODO: tensordot should be function as described in rst docs.
def outer(x, y): def outer(x, y):
"""Return vector-vector outer product.""" """Return vector-vector outer product."""
return dot( return dot(
x.dimshuffle(0, 'x'), x.dimshuffle(0, 'x'),
y.dimshuffle('x', 0)) y.dimshuffle('x', 0))
def any(x, axis=None):
return elemwise.Any(axis)(x)
def all(x, axis=None):
return elemwise.All(axis)(x)
...@@ -1259,13 +1259,14 @@ for(int i=0;i<%(iname)s->nd;i++){ ...@@ -1259,13 +1259,14 @@ for(int i=0;i<%(iname)s->nd;i++){
class All(CAReduce): class All(CAReduce):
""" """ Applies `bitwise and` to all the values of a tensor along the
Equivalent to numpy any specified axis(es).
TODO: elaborate Equivalent to CAReduce(scalar.and_, axis=axis)
""" """
def __init__(self, axis=None): def __init__(self, axis=None):
CAReduce.__init__(self, scalar.and_, axis) CAReduce.__init__(self, scalar.and_, axis)
def _output_dtype(self, idtype): def _output_dtype(self, idtype):
return "int8" return "int8"
...@@ -1275,14 +1276,16 @@ class All(CAReduce): ...@@ -1275,14 +1276,16 @@ class All(CAReduce):
else: else:
return "All{%s}" % ", ".join(map(str, self.axis)) return "All{%s}" % ", ".join(map(str, self.axis))
class Any(CAReduce): class Any(CAReduce):
""" """ Applies `bitwise or` to all the values of a tensor along the
Equivalent to numpy any specified axis(es).
TODO: elaborate Equivalent to CAReduce(scalar.or_, axis=axis)
""" """
def __init__(self, axis=None): def __init__(self, axis=None):
CAReduce.__init__(self, scalar.or_, axis) CAReduce.__init__(self, scalar.or_, axis)
def _output_dtype(self, idtype): def _output_dtype(self, idtype):
return "int8" return "int8"
...@@ -1293,7 +1296,6 @@ class Any(CAReduce): ...@@ -1293,7 +1296,6 @@ class Any(CAReduce):
return "Any{%s}" % ", ".join(map(str, self.axis)) return "Any{%s}" % ", ".join(map(str, self.axis))
class Sum(CAReduce): class Sum(CAReduce):
""" """
Sums all the values of a tensor along the specified axis(es). Sums all the values of a tensor along the specified axis(es).
......
...@@ -312,6 +312,10 @@ class test_CAReduce(unittest.TestCase): ...@@ -312,6 +312,10 @@ class test_CAReduce(unittest.TestCase):
test_nan=True) test_nan=True)
self.with_linker(gof.PerformLinker(), minimum, dtype=dtype, self.with_linker(gof.PerformLinker(), minimum, dtype=dtype,
test_nan=True) test_nan=True)
self.with_linker(gof.PerformLinker(), or_, dtype=dtype,
test_nan=True)
self.with_linker(gof.PerformLinker(), and_, dtype=dtype,
test_nan=True)
def test_c(self): def test_c(self):
for dtype in ["floatX", "complex64", "complex128", "int8", "uint8"]: for dtype in ["floatX", "complex64", "complex128", "int8", "uint8"]:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论