2017-01-16 1 views
3

Я пытаюсь использовать cntk.utils.one_hot следующим образом:CNTK Python - one_hot не кодирующая не прототип

# actions is numpy array of shape (32, 1) and _output_shape is 6 
actions = one_hot(actions, self._output_shape) 

Но он жалуется, что класс numpy.float32 не поддерживается.

Я попытался преобразовать в список Python:

actions = one_hot(list(actions), self._output_shape) 

Я получаю следующее сообщение об ошибке:

File "/home/malmo_user/Workspace/malmo-collab/msrc-rl/model/backend/cntk.py", line 213, in train 
    actions = one_hot(list(actions), self._output_shape) 
    File "/home/malmo_user/anaconda3/envs/cntk-py34/lib/python3.4/site-packages/cntk/utils/swig_helper.py", line 58, in wrapper 
    result = f(*args, **kwds) 
    File "/home/malmo_user/anaconda3/envs/cntk-py34/lib/python3.4/site-packages/cntk/utils/__init__.py", line 76, in one_hot 
    value = cntk_py.Value.create_one_hot_float(num_classes, batch, device, False) 
NotImplementedError: Wrong number or type of arguments for overloaded function 'Value_create_one_hot_float'. 
    Possible C/C++ prototypes are: 
    CNTK::Value::CreateOneHotFloat(size_t,std::vector< std::vector< size_t,std::allocator<size_t> >,std::allocator< std::vector< size_t,std::allocator<size_t> > > > const &,CNTK::DeviceDescriptor const &,bool) 
    CNTK::Value::CNTK_Value_CreateOneHotFloat__SWIG_0(size_t,std::vector< std::vector< size_t,std::allocator<size_t> >,std::allocator< std::vector< size_t,std::allocator<size_t> > > > const &,CNTK::DeviceDescriptor const &) 

ответ

1

Входной сигнал one_hot являются индексы. Они должны быть целыми числами. Попробуйте

actions.astype(int).tolist()