Это всего лишь вопрос синтаксиса программирования на С ++ (я думаю). У меня есть 192 плавает в структуре как:
std :: vector outputData (192);
Я хочу вызвать встроенную функцию Softmax в CNTKLibrary для этого вектора 192×1 — документация в заголовочном файле:
/// Создать экземпляр встроенной операции softmax CNTK для указанного тензора входного операнда
CNTK_API FunctionPtr Softmax (постоянная переменная& операнд, const std :: wstring& name = L «»);
Как я могу это сделать? Я предполагаю, что сначала получаю указатель на функцию, а затем применяю его, но я не понимаю, какой будет синтаксис. Что-то вроде этого…
// Захват указателя функции Softmax
FunctionPtr SoftmaxFuncPtr = Softmax (outputData); // как разыграть arg?
// Как оценить этот FuntionPtr?
SoftmaxFuncPtr-> Eval (); // WAG — понятия не имею …
Куда идет результат вычислений?
Спасибо, если вы можете дать мне несколько советов …
Сначала вам нужно определить переменную для ввода Softmax, что-то вроде:
auto inputVar = InputVariable(DimensionsOfInput, DataType::Float, L"InputSoftMax");
Затем вы создаете составную функцию, используя Softmax, как
FunctionPtr SoftmaxFuncPtr = Softmax(inputVar, L"SoftMax");
auto EvalFuncPtr = AsComposite(SoftmaxFuncPtr, L"EvalSoftMax");
После этого создайте карту ввода и вывода, чтобы подготовить данные для оценки, а затем вызовите Forward () или Evaluate (), чтобы выполнить оценку для входных данных и получить результат вывода.
Образец MultiThreadsEvaluationWithNewFunction () в EvalMultithreads.cpp демонстрирует, как создать новую функцию для оценки. страница описывает, как использовать эти образцы. Функция содержит несколько слоев и поддерживает оценку с использованием многопоточности, поэтому может иметь некоторый код, который не требуется для вашего случая. В этом примере все еще используются низкоуровневые API для управления входными и выходными данными, и у нас также есть высокоуровневые удобные методы, такие как Value :: CreateBatch / Sequence / BatchOfSequence (), Value :: CopyVariableValueTo (), чтобы помочь вам подготовить ввод / вывод данных, не зная деталей низкого уровня. CNTKLibrary.h также имеет описание этих APIS.
Пожалуйста, дайте нам знать любые ваши вопросы.
Спасибо,
Других решений пока нет …