2017-01-16 53 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()