Я пытаюсь написать numpy.ndarray в качестве меток для инструмента преобразования Amazon Sagemaker: write_numpy_to_dense_tensor(). Он преобразует массив функций и меток в RecordIO для лучшего использования алгоритмов Sagemaker.
Однако, если я попытаюсь передать вывод с несколькими метками для меток, я получаю сообщение об ошибке, указывающее, что это может быть только вектор (т.е. скаляр для каждой строки объекта).
Есть ли способ иметь несколько значений в метке? Это полезно для многомерных регрессий, которые могут быть достигнуты с помощью XGBoost, случайных лесов, нейронных сетей и т. д.
Код
import sagemaker.amazon.common as smac
print("Types: {}, {}".format(type(X_train), type(y_train)))
print("X_train shape: {}".format(X_train.shape))
print("y_train shape: {}".format(y_train.shape))
f = io.BytesIO()
smac.write_numpy_to_dense_tensor(f, X_train.astype('float32'), y_train.astype('float32'))
Вывод:
Types: <class 'numpy.ndarray'>, <class 'numpy.ndarray'>
X_train shape: (9919, 2684)
y_train shape: (9919, 20)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-14-fc1033b7e309> in <module>()
3 print("y_train shape: {}".format(y_train.shape))
4 f = io.BytesIO()
----> 5 smac.write_numpy_to_dense_tensor(f, X_train.astype('float32'), y_train.astype('float32'))
~/anaconda3/envs/python3/lib/python3.6/site-packages/sagemaker/amazon/common.py in write_numpy_to_dense_tensor(file, array, labels)
94 if labels is not None:
95 if not len(labels.shape) == 1:
---> 96 raise ValueError("Labels must be a Vector")
97 if labels.shape[0] not in array.shape:
98 raise ValueError("Label shape {} not compatible with array shape {}".format(
ValueError: Labels must be a Vector