How do I convert a winrt::Microsoft::AI::MachineLearning::TensorFloat type back to ID3D12Resource

Issue

I am loading an image to the GPU by leveraging ID3D12Resource type. And I found some documentation on how to convert the ID3D12Resource to a Microsoft::AI::MachineLearning::TensorFloat in the Microsoft documentation, but I can’t seem to find how to revert it back to ID3D12Resource.

I am following the Machine Learning samples from Microsoft documentation, and the output from the model evaluation is a Microsoft::AI::MachineLearning::TensorFloat type:

https://github.com/microsoft/Windows-Machine-Learning/blob/e901cc2791f4f3d22e2382e779996bad49173718/Samples/AdapterSelection/AdapterSelection/cpp/main.cpp#L110

How do I take the model output that is a TensorFloat type and convert it back to ID3D12Resource. Ideally, I would like to override the content from the original ID3D12Resource input with the return of the model.

Thank you for your help 🙂

Solution

In order to get the model’s output as a D3D12Resource type you can just do the following:

com_ptr<ID3D12Resource> resultResource;
results.Outputs().Lookup(outputName).as<ITensorNative>()->GetD3D12Resource( resultResource.put() );

Documentation reference:

https://docs.microsoft.com/en-us/windows/ai/windows-ml/native-apis/itensornative_getd3d12resource

Answered By – Anna Maule

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published