提交 a3084363 authored 作者: Frederic's avatar Frederic

Add tests and don't apply in other cases

上级 ebfbfe8a
...@@ -4259,6 +4259,8 @@ def get_vector_length(v): ...@@ -4259,6 +4259,8 @@ def get_vector_length(v):
start = 0 start = 0
elif isinstance(start, types) and start < 0: elif isinstance(start, types) and start < 0:
start += ndim start += ndim
if start < 0:
start = 0
if stop is None: if stop is None:
stop = ndim stop = ndim
elif isinstance(stop, types): elif isinstance(stop, types):
...@@ -4271,7 +4273,9 @@ def get_vector_length(v): ...@@ -4271,7 +4273,9 @@ def get_vector_length(v):
if (isinstance(stop, types) and if (isinstance(stop, types) and
isinstance(start, types) and isinstance(start, types) and
start >= 0 and stop >= 0): isinstance(step, types) and
start >= 0 and stop >= 0 and
step > 0 and stop >= start):
return (stop - start - 1) // step + 1 return (stop - start - 1) // step + 1
if isinstance(v, Variable): if isinstance(v, Variable):
msg = theano.printing.debugprint(v, file='str') msg = theano.printing.debugprint(v, file='str')
......
...@@ -3352,12 +3352,14 @@ class T_GetVectorLength(unittest.TestCase): ...@@ -3352,12 +3352,14 @@ class T_GetVectorLength(unittest.TestCase):
assert len(list(x.shape[2:4])) == 2 assert len(list(x.shape[2:4])) == 2
assert len(list(x.shape[2:])) == 2 assert len(list(x.shape[2:])) == 2
assert len(list(x.shape[1:4])) == 3 assert len(list(x.shape[1:4])) == 3
assert len(list(x.shape[2:2])) == 0
assert len(list(x.shape[1:5])) == 3 assert len(list(x.shape[1:5])) == 3
assert len(list(x.shape[1:10])) == 3 assert len(list(x.shape[1:10])) == 3
# Test step # Test step
assert len(list(x.shape[1:10:2])) == 2 assert len(list(x.shape[1:10:2])) == 2
# Test neg start # Test neg start
assert len(list(x.shape[-1:4])) == 1 assert len(list(x.shape[-1:4])) == 1
assert len(list(x.shape[-6:4])) == 4
# test neg stop # test neg stop
assert len(list(x.shape[1:-2])) == 1 assert len(list(x.shape[1:-2])) == 1
assert len(list(x.shape[1:-1])) == 2 assert len(list(x.shape[1:-1])) == 2
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论