Как использовать VowpalWabbit python framework для изучения многострочного примера? - PullRequest
0 голосов
/ 25 марта 2020
from vowpalwabbit import pyvw
vw = pyvw.vw("--cb 3 --epsilon 0.2 --quiet")
input = "2:-5:0.2 |  Anna" 
vw.learn(input)
input = "3:-20:0.2 | Anna \n 2:-20:0.2 | Anna \n 1:-20:0.2 | Anna"
vw.learn([vw.example(string) for string in input.split('\n')])
print(vw.predict(" | Anna"))

Этот фрагмент кода выдает ошибку:

RuntimeError                              Traceback (most recent call last)

<ipython-input-7-e8693ac0708c> in <module>()
      4 vw.learn(input)
      5 input = "3:-20:0.2 | Anna \n 2:-20:0.2 | Anna \n 1:-20:0.2 | Anna"
----> 6 vw.learn([vw.example(string) for string in input.split('\n')])
      7 
      8 vw.learn(input)

/usr/local/lib/python3.6/dist-packages/vowpalwabbit/pyvw.py in learn(self, ec)
    168             pylibvw.vw.learn(self, ec)
    169         elif isinstance(ec, list):
--> 170             pylibvw.vw.learn_multi(self,ec)
    171         else:
    172             raise TypeError('expecting string or example object as ec argument for learn, got %s' % type(ec))

RuntimeError: This reduction does not support multi-line example.

Почему я получаю эту ошибку? Каков правильный синтаксис для обучения из многострочного примера?

1 Ответ

0 голосов
/ 25 марта 2020

Проблема в том, что используемое сокращение CB - это сокращение на одну строку. Поэтому передача многострочных примеров в этом случае не имеет смысла. Это видно по ошибке:

RuntimeError: This reduction does not support multi-line example.

Подробнее о --cb можно прочитать здесь: https://github.com/VowpalWabbit/vowpal_wabbit/wiki/Logged-Contextual-Bandit-Example

...