cntk - 使用 CNTKTextFormat 阅读器时如何访问评论栏?

标签 cntk

我不知道如何访问 CNTKTextFormat 格式的数据文件中的评论列。例如,在这个 tutorial ,你有以下内容:

19  |S0 178:1 |# BOS      |S1 14:1 |# flight  |S2 128:1 |# O
19  |S0 770:1 |# show                         |S2 128:1 |# O
19  |S0 429:1 |# flights                      |S2 128:1 |# O

如何访问评论数据?

最佳答案

如果您像这样实例化您的小批量源:

data_source = (CTFDeserializer("mydata.ctf", ...), randomize=False, ...)

然后您可以使用 Python 打开您传递给 CTFDeserializer 的输入文件,并逐个小批量解析它。设置randomize=False非常重要,否则阅读器和您下面的手动解析将不同步。例如,如果文件对象是 stream 并且 minibatch 大小是 batch_size,则以下代码将打印每个序列的注释列作为字典映射前面的列名 (S0, S1,或 S0) 到评论列中找到的字符串序列。

从 itertools 导入 groupby 从集合导入默认字典

 stream = open("mydata.ctf")

 lines = [stream.readline() for i in range(batch_size)]
 for seqid, sequence in groupby(lines, lambda s:s.split()[0]):
     mapping = defaultdict(list)
     for sample in sequence:
         parts = sample.split('|')
         unused = [mapping[parts[i-1].split(' ')[0].strip()].append(p.strip()) for i, p in enumerate(parts) if p.startswith('#')]
     print(seqid, mapping)

对于上面的示例输入,它产生:

19 defaultdict(<class 'list'>, {'S0': ['# BOS', '# show', '# flights'], 'S2': ['# O', '# O', '# O'], 'S1': ['# flight']})

此示例适用于上述输入格式。如果您的实际格式不同,则必须根据您的目的进行调整。

关于cntk - 使用 CNTKTextFormat 阅读器时如何访问评论栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41624444/

相关文章:

CNTK:用于模型消耗的 Python 与 C# API

python - cntk 层中的线性激活函数?

python - CNTK运行时错误

python - 在 CNTK 中实现 Seq2Seq 时存在多个轴问题

tensorflow - Torch 或 Tensorflow 中的通用循环神经网络

python - CNTK python api - 继续训练模型

python - 使用什么单位来定义 CNTK 的历元大小?

machine-learning - 在深度学习方法中结合临床和图像数据的最佳方法是什么?

python - CNTK:不使用 1 位 SGD 的 Python 数据并行训练