2017-01-09 2 views
0

Ich habe eine Map-Datei Daten wie folgt enthalten:Verbesserte Fehlermeldung für schlecht formatiertes Eingabeformat?

|labels 0 0 1 0 0 0 |features 0 
|labels 1 0 0 0 0 0 |features 2 
|labels 0 0 0 1 0 0 |features 3 
|labels 0 0 0 0 0 1 |features 7 

Daten in ein mini gelesen wird mit dem folgenden Code: wird

from cntk import Trainer, StreamConfiguration, text_format_minibatch_source, learning_rate_schedule, UnitType 

mb_source = text_format_minibatch_source('test_map2.txt', [ 
    StreamConfiguration('features', 1), 
    StreamConfiguration('labels', num_classes)]) 

test_minibatch = mb_source.next_minibatch(2) 

Wenn die Eingabedatei schlecht ausgebildet sind, werden Sie manchmal bekommen eine ziemlich kryptische Fehlermeldung. Zum Beispiel eines fehlender Zeilenumbruch am Ende der letzten Zeile in der Eingabedatei wird in einem Fehler wie dies zur Folge hat:

--------------------------------------------------------------------------- 
RuntimeError        Traceback (most recent call last) 
<ipython-input-35-2f1481ccfced> in <module>() 
----> 1 test_minibatch = mb_source.next_minibatch(2) 

C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py34\lib\site-packages\cntk\utils\swig_helper.py in wrapper(*args, **kwds) 
    56  @wraps(f) 
    57  def wrapper(*args, **kwds): 
---> 58   result = f(*args, **kwds) 
    59   map_if_possible(result) 
    60   return result 

C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py34\lib\site-packages\cntk\io\__init__.py in next_minibatch(self, minibatch_size_in_samples, input_map, device) 
    159 
    160   mb = super(MinibatchSource, self).get_next_minibatch(
--> 161     minibatch_size_in_samples, device) 
    162 
    163   if input_map: 

C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py34\lib\site-packages\cntk\cntk_py.py in get_next_minibatch(self, *args) 
    1914 
    1915  def get_next_minibatch(self, *args): 
-> 1916   return _cntk_py.MinibatchSource_get_next_minibatch(self, *args) 
    1917 MinibatchSource_swigregister = _cntk_py.MinibatchSource_swigregister 
    1918 MinibatchSource_swigregister(MinibatchSource) 

RuntimeError: Invalid chunk requested. 

Manchmal könnte es schwierig sein, herauszufinden, wo in der Datei gäbe es ein Problem sein. Wäre es möglich, eine spezifischere Fehlermeldung auszugeben? Die Zeilennummer in der Eingabedatei wäre nützlich.

Antwort

2

Vielen Dank für die Meldung des Problems. Wir haben einen Fehler erstellt und werden daran arbeiten, das Verhalten des Lesers mit falsch geformten Eingaben zu korrigieren.