2017-02-11 9 views
0

Kurに入力しようとしていますが、プログラムがクラッシュすることなく入力に複数の列を指定する方法はわかりません。ここで小さな例を示します。KurでCSVを使用するときに入力を指定するには

model: 
    - input: 
     - SepalWidthCm 
     - SepalLengthCm 
    - dense: 10 
    - activation: tanh 
    - dense: 3 
    - activation: tanh 
    name: Species 

train: 
    data: 
    - csv: 
     path: Iris.csv 
     header: yes 
    epochs: 1000 
    weights: best.w 
    log: tutorial-log 

loss: 
    - target: Species 
    name: mean_squared_error 

エラー:

File "/Users/bytter/.pyenv/versions/3.5.2/bin/kur", line 11, in <module> 
    sys.exit(main()) 
    File "/Users/bytter/.pyenv/versions/3.5.2/lib/python3.5/site-packages/kur/__main__.py", line 269, in main 
    sys.exit(args.func(args) or 0) 
    File "/Users/bytter/.pyenv/versions/3.5.2/lib/python3.5/site-packages/kur/__main__.py", line 48, in train 
    func = spec.get_training_function() 
    File "/Users/bytter/.pyenv/versions/3.5.2/lib/python3.5/site-packages/kur/kurfile.py", line 282, in get_training_function 
    model = self.get_model(provider) 
    File "/Users/bytter/.pyenv/versions/3.5.2/lib/python3.5/site-packages/kur/kurfile.py", line 148, in get_model 
    self.model.build() 
    File "/Users/bytter/.pyenv/versions/3.5.2/lib/python3.5/site-packages/kur/model/model.py", line 282, in build 
    self.build_graph(input_nodes, output_nodes, network) 
    File "/Users/bytter/.pyenv/versions/3.5.2/lib/python3.5/site-packages/kur/model/model.py", line 356, in build_graph 
    for layer in node.container.build(self): 
    File "/Users/bytter/.pyenv/versions/3.5.2/lib/python3.5/site-packages/kur/containers/container.py", line 281, in build 
    self._built = list(self._build(model)) 
    File "/Users/bytter/.pyenv/versions/3.5.2/lib/python3.5/site-packages/kur/containers/layers/placeholder.py", line 122, in _build 
    'Placeholder "{}" requires a shape.'.format(self.name)) 
kur.containers.parsing_error.ParsingError: Placeholder "..input.0" requires a shape. 

予想通り- input: SepalWidthCm作品を使用しました。

答えて

2

あなたのアプローチの問題は、Kurが入力をどのように連結したいのか分からないことです。入力が2Dテンソルの次元(2、N)(ここで、NはCSVファイル内のデータポイントの数になります)?

[ 
    [SepalWidthCm_0, SepalWidthCm_1, ...], 
    [SepalLengthCm_0, SepalLengthCm_1, ...] 
] 

N.B.、その例は非常に深い学習に優しい構造ではありません)それとも、このような寸法(N、2)、のテンソルに統合すべきか?

[ 
    [SepalWidthCm_0, SepalLengthCm_0], 
    [SepalWidthCm_1, SepalLengthCm_1], 
    ... 
] 

また、同じ操作を並列で各列に適用することはできますか?それにかかわらず、この問題は、入力データが多次元の場合(たとえば、長さや幅などのスカラーの代わりに、ベクトルや行列さえある場合など)、答えるのが非常に困難または曖昧になります。

Kurは、あなたが望むものを推測しようとするのではなく、間違っていると考えていますが、各入力は単一のデータソースであると考えています。

ここでは、データを結合する方法と、Kurでデータを作成する方法について説明します。

  1. 行方向コンビネーション。上記の2番目の例では、入力テンソルが次元数(batchSize、2)を持つように、CSVデータの「行」をタプルに結合したいと考えています。次に、あなたのクア・モデルは、次のようになります。

    model: 
    
        # Define the model inputs. 
        - input: SepalWidthCm 
        - input: SepalLengthCm 
    
        # Concatenate the inputs. 
        - merge: concat 
        inputs: [SepalWidthCm, SepalLengthCm] 
    
        # Do processing on these "vectorized" inputs. 
        - dense: 10 
        - activation: tanh 
        - dense: 1 
        - activation: tanh 
    
        # Output 
        - output: Species 
    
  2. 独立した処理した後、を組み合わせます。これは、各入力列に対して独立して操作を行い、それらを一緒にマージする設定です(その後、いくつかの操作を追加することも可能です)。 ASCII-技術では、これは次のようになります。

    model: 
    
        # First "branch" of processing. 
        - input: SepalWidthCm 
        - dense: 10 
        - activation: tanh 
        name: WidthBranch 
    
        # Second "branch" of processing. 
        - input: SepalLengthCm 
        - dense: 10 
        - activation: tanh 
        name: LengthBranch 
    
        # Fuse things together. 
        - merge: 
        inputs: [WidthBranch, LengthBranch] 
    
        # Continue some processing 
        - dense: 1 
        - activation: tanh 
    
        # Output 
        - output: Species 
    

merge層を持っていることに留意してください:この場合

INPUT_1 --> dense, activation --\ 
           +---> dense, activation --> OUTPUT 
INPUT_2 --> dense, activation --/ 

、あなたはこのようになりますクアモデルを持っているでしょうKur 0.3以来の周りにあったので、あなたが最近のバージョンを使用していることを確認してください。

免責事項:私はクアのコアメンテナ午前)あなたの答え、アダムのため

+0

感謝。ドキュメンテーションにそのような例があることをお勧めしますか?それは非常に便利だろう:) –

+0

それは素晴らしい点です!すぐにドキュメントに追加されます。 –

+0

ご連絡先、@adam、私はDeepgram Web Chatを通じて私的に連絡を取ろうとしました。あなたは時間を見つけたら、私に戻ってきますか?ありがとう。 –

関連する問題