CNTK RuntimeError: AddSequence: Sequences must be a least one frame long
CNTK RuntimeError: AddSequence: Sequences must be a least one frame long
我在以下代码中遇到错误:
x = cntk.input_variable(shape=c(8,3,1))
y = cntk.sequence.slice(x,1,0)
x0 = np.reshape(np.arange(48.0,dtype=np.float32),(2,8,1,3))
y.eval({x:x0})
Error : Sequences must be a least one frame long
但是当我 运行 这样做时 运行 没问题:
x = cntk.input_variable(shape=c(3,2)) #change
y = cntk.sequence.slice(x,1,0)
x0 = np.reshape(np.arange(24.0,dtype=np.float32),(1,8,1,3)) #change
y.eval({x:x0})
我无法理解 slice
方法中的一些事情:
- 它将在哪个数组级别切片。
- 累积对于文档,第二个参数是
begin_index
,在它旁边是 end_index
。 being_index
怎么可能大于end_index
。
slice()
有两个版本,一个是张量切片,一个是序列切片。您的示例使用序列。
如果您的输入是序列(例如单词),第一种形式 cntk.slice()
将单独切片序列的每个元素并创建由切片张量组成的相同长度的序列。第二种形式 cntk.sequence.slice()
将从序列中切出一系列条目。例如。 cntk.sequence.slice(x, 13, 42)
将从 x
中删除序列项 13..41,并创建一个长度为 (42-13) 的新序列。
如果您打算尝试第一种形式,请更改为 cntk.slice()
。如果您指的是序列版本,请尝试将 x0
附加在 [...]
中。传递小批量数据的规范形式是批量条目列表(例如 MB 大小为 128 --> 包含 128 个条目的列表),其中每个批量条目都是形状为 (Ti,) + input_shape
的张量,其中 Ti
是相应序列的序列长度。这个
x0 = [ np.reshape(np.arange(48.0,dtype=np.float32),(2,8,1,3)) ]
表示具有单个条目(1 个列表条目)的小批量,其中条目是 2 个序列项的序列,其中每个序列项的形状为 (8,1,3)。
开始和结束索引可以是负数,以便从末尾开始索引(类似于Python 切片)。然而,与 Python 不同的是,0 是指向结尾的有效结尾索引。
我在以下代码中遇到错误:
x = cntk.input_variable(shape=c(8,3,1))
y = cntk.sequence.slice(x,1,0)
x0 = np.reshape(np.arange(48.0,dtype=np.float32),(2,8,1,3))
y.eval({x:x0})
Error : Sequences must be a least one frame long
但是当我 运行 这样做时 运行 没问题:
x = cntk.input_variable(shape=c(3,2)) #change
y = cntk.sequence.slice(x,1,0)
x0 = np.reshape(np.arange(24.0,dtype=np.float32),(1,8,1,3)) #change
y.eval({x:x0})
我无法理解 slice
方法中的一些事情:
- 它将在哪个数组级别切片。
- 累积对于文档,第二个参数是
begin_index
,在它旁边是end_index
。being_index
怎么可能大于end_index
。
slice()
有两个版本,一个是张量切片,一个是序列切片。您的示例使用序列。
如果您的输入是序列(例如单词),第一种形式 cntk.slice()
将单独切片序列的每个元素并创建由切片张量组成的相同长度的序列。第二种形式 cntk.sequence.slice()
将从序列中切出一系列条目。例如。 cntk.sequence.slice(x, 13, 42)
将从 x
中删除序列项 13..41,并创建一个长度为 (42-13) 的新序列。
如果您打算尝试第一种形式,请更改为 cntk.slice()
。如果您指的是序列版本,请尝试将 x0
附加在 [...]
中。传递小批量数据的规范形式是批量条目列表(例如 MB 大小为 128 --> 包含 128 个条目的列表),其中每个批量条目都是形状为 (Ti,) + input_shape
的张量,其中 Ti
是相应序列的序列长度。这个
x0 = [ np.reshape(np.arange(48.0,dtype=np.float32),(2,8,1,3)) ]
表示具有单个条目(1 个列表条目)的小批量,其中条目是 2 个序列项的序列,其中每个序列项的形状为 (8,1,3)。
开始和结束索引可以是负数,以便从末尾开始索引(类似于Python 切片)。然而,与 Python 不同的是,0 是指向结尾的有效结尾索引。