提交 0603014d authored 作者: Frederic Bastien's avatar Frederic Bastien

cast the axes to tuple if it is list in TensorDot and TensorDotGrad

上级 8d2f4abe
...@@ -3712,6 +3712,11 @@ pprint.assign(dot, printing.OperatorPrinter(printing.special['middle_dot'], -1, ...@@ -3712,6 +3712,11 @@ pprint.assign(dot, printing.OperatorPrinter(printing.special['middle_dot'], -1,
######################### #########################
class TensorDotGrad(Op): class TensorDotGrad(Op):
def __init__(self, axes): def __init__(self, axes):
if isinstance(axes,list):
for i,a in enumerate(axes):
if isinstance(a,list):
axes[i]=tuple(a)
axes=tuple(axes)
self.axes = axes; self.axes = axes;
def __eq__(self, other): def __eq__(self, other):
...@@ -3759,6 +3764,11 @@ class TensorDot(Op): ...@@ -3759,6 +3764,11 @@ class TensorDot(Op):
""" """
def __init__(self, axes): def __init__(self, axes):
if isinstance(axes,list):
for i,a in enumerate(axes):
if isinstance(a,list):
axes[i]=tuple(a)
axes=tuple(axes)
self.axes = axes; self.axes = axes;
def __eq__(self, other): def __eq__(self, other):
......
...@@ -2444,6 +2444,20 @@ class test_tensordot(unittest.TestCase): ...@@ -2444,6 +2444,20 @@ class test_tensordot(unittest.TestCase):
f6(bval,aval))) f6(bval,aval)))
utt.verify_grad(TensorDot(axes), [bval,aval]) utt.verify_grad(TensorDot(axes), [bval,aval])
def test_list(self):
# test matrix-matrix
amat = dmatrix()
bmat = dmatrix()
axes = [[1,],[0,]]
c = tensordot(axes)(amat, bmat)
f3 = inplace_func([amat,bmat],c)
aval = numpy.random.rand(4,7);
bval = numpy.random.rand(7,9);
self.failUnless(numpy.all(numpy.tensordot(aval,bval,axes) == \
f3(aval,bval)))
utt.verify_grad(TensorDot(axes), [aval,bval])
def test_smallest_stack(): def test_smallest_stack():
sx, sy = dscalar(), dscalar() sx, sy = dscalar(), dscalar()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论