【发布时间】:2018-04-14 05:31:53
【问题描述】:
我正在使用 CNTK 示例中的语言理解模型训练模型。 这是一个序列标记问题。对于每个查询中的每个单词,您都希望预测正确的标签(从 16 个可能的标签中)。
这就是我所做的
minibatch_size = 5
data = reader.next_minibatch(minibatch_size, input_map={ # fetch minibatch
x: reader.streams.query,
y: reader.streams.slot_labels
})
if not data: # until we hit the end
break
evaluator = C.eval.Evaluator(loss, progress_printer)
evaluator.test_minibatch(data)
res = model.eval(data)
print("data[y].shape=", data[y].shape)
print("")
print("len(res)=", len(res), " shape=", res[0].shape)
data[y].shape 的形状为 1 * 3 * 16,或 2 * 4 * 16 等
我认为 3/4 表示查询中的单词数。 16 是 one-hot 向量的大小。所以 1/ 必须是批量大小。但是我设置batch size是5,为什么不等于5呢?
另一个令人困惑的事情是,如果我执行“t += data[y].num_samples”,那么一开始 t 可能约为 60。 minibatchData中的num_samples和num_sequences是什么意思?
另外,如果是 2 * 4 * 16,是否意味着两个查询的长度都是 4?这是否意味着该程序将打乱我的测试数据以组合相同长度的查询?或者一般情况下,如果我设置 random=False,顺序应该和我的测试数据一样吗?
【问题讨论】:
-
跟进:实际上。它并不总是 1 * 3 * 16。有时是 2 * 3 * 16 等等。但为什么不是 5?
标签: cntk