Google AutoML Ruby Gem Tables: недопустимая строка для назначения в поле подменю '' - PullRequest
1 голос
/ 07 ноября 2019

Я пытаюсь использовать службу прогнозирования AutoML из Ruby gem google-cloud-automl и продолжаю получать ошибки. У меня уже есть развернутая модель, работающая с онлайн-прогнозами.

Вот мой текущий код:

payload = {
  row: {
    column_spec_ids: %w(COLUMN_NUMBER_1 COLUMN_NUMBER_2 COLUMN_NUMBER_3 COLUMN_NUMBER_4),
    values: [
      DATA_1,
      DATA_2,
      DATA_3,
      DATA_4
    ]
  }
}

client = Google::Cloud::AutoML::Prediction.new(version: :v1beta1)
response = client.predict(formatted_model_path, payload)

, и я получаю эту ошибку:

Google::Protobuf::TypeError: Invalid type String to assign to submessage field ''.
from path/to/my/vendor/bundle/ruby/2.5.0/gems/google-gax-1.8.1/lib/google/gax/util.rb:65:in `initialize'

(Вмой код, COLUMN_NUMBER_1 до _4 на самом деле являются реальными идентификаторами, а DATA_1 до _4 являются строками) formatted_model_path - это путь моей модели. Ранее я смог получить доступ к модели NLP с помощью этого кода (я только обновил формат полезной нагрузки)

Я уже пытался сгенерировать Google :: Cloud :: AutoML :: V1beta1 :: Row. Я могу заполнить column_spec_ids, но каждый раз, когда я пытаюсь этот код

request = Google::Cloud::AutoML::V1beta1::Row.new
request.values = payload[:row][:values]

, я получаю эту ошибку

Google::Protobuf::TypeError: Expected repeated field array
from (pry):4:in `method_missing'

1 Ответ

0 голосов
/ 08 ноября 2019

Я действительно нашел решение ...

Вам необходимо указать тип передаваемых данных. Вместо

values: [
      DATA_1,
      DATA_2,
      DATA_3,
      DATA_4
    ]

у меня должно быть

values: [
      {string_value: DATA_1},
      {string_value: DATA_2},
      {string_value: DATA_3},
      {string_value: DATA_4}
    ]

(и вы можете иметь string_value, number_value и некоторые другие, я думаю, что полный список здесь )

...