【问题标题】:CNTK: Reached the maximum number of allowed errors while reading the input fileCNTK:读取输入文件时达到最大允许错误数
【发布时间】:2018-07-23 20:28:33
【问题描述】:

我正在为 Capstone 项目开发一个预测医学成像的模型。我是 CNTK 的超级新手(使用 TF 和 Keras 有一段时间了),我遇到了以下错误:

Reader from file train_data.ctf
Reader from file test_data.ctf
Traceback (most recent call last):

  File "<ipython-input-9-01a27186472a>", line 6, in <module>
    exe_train_test(model, all_data = False)

  File "<ipython-input-8-65daea35bdc7>", line 8, in do_train_test
    train_test(read_train, read_test, model)

  File "<ipython-input-7-e044cc5a63e1>", line 32, in train_test
    data=train_reader.next_minibatch(mbatch_size, input_map = input_map)

  File "C:\Users\devg2\Anaconda3\lib\site-packages\cntk\internal\swig_helper.py", line 69, in wrapper
    result = f(*args, **kwds)

  File "C:\Users\devg2\Anaconda3\lib\site-packages\cntk\io\__init__.py", line 329, in next_minibatch
    partition_index, device)

  File "C:\Users\devg2\Anaconda3\lib\site-packages\cntk\cntk_py.py", line 3143, in get_next_minibatch
    return _cntk_py.MinibatchSource_get_next_minibatch(self, *args)

RuntimeError: Reached the maximum number of allowed errors while reading the input file (train_data.ctf).

[CALL STACK]
    > Microsoft::MSR::CNTK::IDataReader::  SupportsDistributedMBRead
    - Microsoft::MSR::CNTK::IDataReader::  SupportsDistributedMBRead (x6)
    - CreateCompositeDataReader (x5)
    - CNTK::TrainingParameterSchedule<unsigned __int64>::  GetMinibatchSize (x4)

关于我是否在数据输入中遗漏了什么的任何指导。数据为.png格式的图片。

【问题讨论】:

    标签: artificial-intelligence classification cntk


    【解决方案1】:

    此处为 CNTK Nube - 但是:

    假设您的输入流配置如下:

    0   |S0 178:1 |# BOS    |S1 14:1 |# flight  |S2 128:1 |# O
    0   |S0 479:1 |# i      |S2 128:1 |# O
    0   |S0 902:1 |# want       |S2 128:1 |# O
    0   |S0 851:1 |# to     |S2 128:1 |# O
    0   |S0 431:1 |# fly        |S2 128:1 |# O
    0   |S0 444:1 |# from       |S2 128:1 |# O
    0   |S0 266:1 |# boston     |S2 48:1 |# B-fromloc.city_name
    0   |S0 240:1 |# at     |S2 128:1 |# O
    0   |S0 168:1 |# 838        |S2 35:1 |# B-depart_time.time
    0   |S0 210:1 |# am     |S2 100:1 |# I-depart_time.time
    0   |S0 215:1 |# and        |S2 128:1 |# O
    0   |S0 236:1 |# arrive     |S2 128:1 |# O
    0   |S0 482:1 |# in     |S2 128:1 |# O
    0   |S0 351:1 |# denver     |S2 78:1 |# B-toloc.city_name
    0   |S0 240:1 |# at     |S2 128:1 |# O
    0   |S0 27:1 |# 1110        |S2 14:1 |# B-arrive_time.time
    0   |S0 482:1 |# in     |S2 128:1 |# O
    0   |S0 827:1 |# the        |S2 128:1 |# O
    0   |S0 606:1 |# morning        |S2 12:1 |# B-arrive_time.period_of_day
    0   |S0 179:1 |# EOS        |S2 128:1 |# O
    

    因为我在您的问题中看不到输入样本,所以我从 ATIS 数据集中提供了这个。

    每个输入和输出流信息都必须配置正确的尺寸和轴。它必须像这样配置:

    cntk.io.MinibatchSource(cntk.io.CTFDeserializer(path, cntk.io.StreamDefs(
        query         = cntk.io.StreamDef(field='S0', shape=vocab_size,  is_sparse=True),
        intent_labels = cntk.io.StreamDef(field='S1', shape=num_intents, is_sparse=True),  # (used for intent classification variant)
        slot_labels   = cntk.io.StreamDef(field='S2', shape=num_labels,  is_sparse=True)
    )), randomize=is_training, max_sweeps = cntk.io.INFINITELY_REPEAT if is_training else 1)
    

    必须在正确的轴上使用正确的维度配置流 S0、S1 和 S2。

    模型看起来像这样:

    Sequential([
        Label('input'),
        Embedding(emb_dim, name='embed'),
        Label('embedded_input'),
        Stabilizer(),
        Recurrence(LSTM(hidden_dim)),
        Stabilizer(),
        Label('hidden_representation'),
        Dense(num_labels, name='out_projection')
    ])
    

    虽然这个示例没有为您的 .png 示例提供直接答案,但它为您提供了一个查看的地方,匹配 CNTK 抱怨的尺寸。我相信通过您的问题描述,如果满足上述条件,这将解决您的问题。

    此示例来自 Microsoft 示例:https://github.com/Microsoft/CNTK/tree/master/Examples/LanguageUnderstanding/ATIS

    【讨论】:

      猜你喜欢
      • 2014-04-04
      • 1970-01-01
      • 2011-01-23
      • 2013-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 2022-11-12
      相关资源
      最近更新 更多