簡體   English   中英

如何正確使用kurfile中的`template`部分?

[英]How to make use of `template` section in kurfile properly?

問題

我嘗試通過將template部分添加到mnist.yml來嘗試使用template

我這樣做是為了模仿下面的簡短示例: 在此處輸入圖片說明

我的嘗試是在這里 :( mnist.ymlmnist-defaults.yml其余部分mnist.yml觸及),mnist的原始文件可以在這里找到

在此處輸入圖片說明

然后我得到以下錯誤: 在此處輸入圖片說明


回應亞當的回答如下:

更新到kur 0.5.2之后,代碼就在這里, mnist-defaults.yml保持不變:

在此處輸入圖片說明

mnist.yml

---
include:
  - mnist-defaults.yml
  - mnist_cnn_helper.yml

settings:
  cnn:
    k: 64
    s: 2

model:
  - input: images
  # - convolution:
  #     kernels: 64
  #     size: [2, 2]
  - cnn_block: "{{cnn}}"
  - activation: relu
  - flatten:
  - dense: 10
  - activation: softmax
    name: labels

train:
  data:
    - mnist:
        images:
          url: "http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz"
        labels:
          url: "http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz"
...

mnist_cnn_block.yml

---
templates:
  cnn_block:
          - convolution:
        kernels: "{{k}}"
        size: "{{[s, s]}}"
...

這是錯誤消息

> (dlnd-tf-lab)  ->kur dump mnist.yml
[ERROR 2017-03-29 09:02:11,789 kur.kurfile:734] Failed to read file: mnist_cnn_helper.yml. Check your syntax.
Traceback (most recent call last):
  File "/Users/Natsume/Downloads/kur_road/kur/kur/kurfile.py", line 731, in parse_source
    data = Reader.read_file(expanded)
  File "/Users/Natsume/Downloads/kur_road/kur/kur/reader/reader.py", line 109, in read_file
    return reader.read(fh.read())
  File "/Users/Natsume/Downloads/kur_road/kur/kur/reader/yaml_reader.py", line 56, in read
    return yaml.load(data)
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/__init__.py", line 72, in load
    return loader.get_single_data()
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/constructor.py", line 35, in get_single_data
    node = self.get_single_node()
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/composer.py", line 36, in get_single_node
    document = self.compose_document()
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/composer.py", line 55, in compose_document
    node = self.compose_node(None, None)
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/composer.py", line 64, in compose_node
    if self.check_event(AliasEvent):
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/parser.py", line 98, in check_event
    self.current_event = self.state()
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/parser.py", line 449, in parse_block_mapping_value
    if not self.check_token(KeyToken, ValueToken, BlockEndToken):
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/scanner.py", line 116, in check_token
    self.fetch_more_tokens()
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/scanner.py", line 257, in fetch_more_tokens
    self.get_mark())
yaml.scanner.ScannerError: while scanning for the next token
found character '\t' that cannot start any token
  in "<unicode string>", line 4, column 1:
              - convolution:
    ^
Traceback (most recent call last):
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/bin/kur", line 11, in <module>
    load_entry_point('kur', 'console_scripts', 'kur')()
  File "/Users/Natsume/Downloads/kur_road/kur/kur/__main__.py", line 382, in main
    sys.exit(args.func(args) or 0)
  File "/Users/Natsume/Downloads/kur_road/kur/kur/__main__.py", line 53, in dump
    spec = parse_kurfile(args.kurfile, args.engine)
  File "/Users/Natsume/Downloads/kur_road/kur/kur/__main__.py", line 45, in parse_kurfile
    spec = Kurfile(filename, engine)
  File "/Users/Natsume/Downloads/kur_road/kur/kur/kurfile.py", line 69, in __init__
    context=None
  File "/Users/Natsume/Downloads/kur_road/kur/kur/kurfile.py", line 754, in parse_source
    loaded=loaded
  File "/Users/Natsume/Downloads/kur_road/kur/kur/kurfile.py", line 731, in parse_source
    data = Reader.read_file(expanded)
  File "/Users/Natsume/Downloads/kur_road/kur/kur/reader/reader.py", line 109, in read_file
    return reader.read(fh.read())
  File "/Users/Natsume/Downloads/kur_road/kur/kur/reader/yaml_reader.py", line 56, in read
    return yaml.load(data)
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/__init__.py", line 72, in load
    return loader.get_single_data()
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/constructor.py", line 35, in get_single_data
    node = self.get_single_node()
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/composer.py", line 36, in get_single_node
    document = self.compose_document()
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/composer.py", line 55, in compose_document
    node = self.compose_node(None, None)
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/composer.py", line 64, in compose_node
    if self.check_event(AliasEvent):
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/parser.py", line 98, in check_event
    self.current_event = self.state()
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/parser.py", line 449, in parse_block_mapping_value
    if not self.check_token(KeyToken, ValueToken, BlockEndToken):
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/scanner.py", line 116, in check_token
    self.fetch_more_tokens()
  File "/Users/Natsume/miniconda2/envs/dlnd-tf-lab/lib/python3.5/site-packages/yaml/scanner.py", line 257, in fetch_more_tokens
    self.get_mark())
yaml.scanner.ScannerError: while scanning for the next token
found character '\t' that cannot start any token
  in "<unicode string>", line 4, column 1:
              - convolution:
    ^

這里的問題是,即使YAML規范禁止這樣做,PyYAML(Kur使用的YAML解析器)也會默默地忽略重復的YAML密鑰。 實際上,該錯誤報告是8年前提交的,但尚未得到解決(也許是因為它可能會破壞依賴於此行為的舊代碼,但我不確定)。

由於您說的是“其余mnist.yml ...未受影響”,因此我假設您在mnist.yml的底部有一個include鍵,因為現成的Kur示例的最后一行是:

include: mnist-defaults.yml

這與mnist.yml文件的第一行沖突,該文件現在包含重復的include鍵。 相反,您應該替換兩個include部分:

include:
  - mnist-defaults.yml
  - mnist_cnn_helper.yml

這應該可以在Kur 0.5.2或更高版本中按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM