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