docs.unity3d.com
Search Results for

    Show / Hide Table of Contents
    Note

    Sentis is now called Inference Engine. The documentation has moved to chttps://docs.unity3d.com/Packages/com.unity.ai.inference@latest. Refer to the new location for the latest updates and guidance. Make sure to update your bookmarks and references accordingly.

    Create input for a model

    A model requires input tensors with certain shapes and data types. Use this information to find model inputs and create input tensors for your model.

    Understand the required input

    Before you can create input tensors for a model, you must first understand the shape and data types of the model inputs. For more information, refer to Model inputs.

    The TensorShape of the Tensor you create must be compatible with the DynamicTensorShape, which defines the shape of the model input.

    Convert an array to a tensor

    To create a CPU tensor from a one-dimensional data array, follow these steps:

    1. Create a TensorShape object that has the length of each axis.
    2. Create a Tensor<T> object with the shape and the data array.

    For example, the following code creates a tensor for a model that takes an input tensor of shape 3 × 1 × 3.

    using UnityEngine;
    using Unity.Sentis;
    
    public class ConvertArrayToTensor : MonoBehaviour
    {
        void Start()
        {
            // Create a data array with 9 values
            float[] data = new float[] { 1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f };
    
            // Create a 3D tensor shape with size 3 × 1 × 3
            TensorShape shape = new TensorShape(3, 1, 3);
    
            // Create a new tensor from the array
            Tensor<float> tensor = new Tensor<float>(shape, data);
        }
    }
    

    Create an empty tensor

    You can create a CPU tensor with its memory 0-initialized as follows:

    var tensor = new Tensor<int>(new TensorShape(1), clearOnInit: true);
    

    The parameter clearOnInit determines whether the resulting tensor memory should be 0-initialized. If it is unimportant what the initial data of the tensor is, set clearOnInit to false to avoid this additional operation.

    Pass inputs to a worker

    If a model needs multiple input tensors, do one of the following:

    • Call SetInput on the worker for each input, and then call Schedule on the worker with no arguments.
    • Call Schedule on the worker with an array of the desired inputs.
    worker.SetInput("x", xTensor);
    worker.SetInput("y", yTensor);
    worker.Schedule();
    
    worker.Schedule(xTensor, yTensor);
    

    To avoid garbage collection due to the params array creation, you can pre-allocate the input array.

    var inputs = new [] { xTensor, yTensor };
    //...
    worker.Schedule(inputs);
    

    Edit a model

    Use the functional API to add operations to your model inputs. For more information, refer to Edit a model.

    Additional resources

    • Tensor fundamentals
    • Edit a model
    • Convert a texture to a tensor

    Did you find this page useful? Please give it a rating:

    Thanks for rating this page!

    Report a problem on this page

    What kind of problem would you like to report?

    • This page needs code samples
    • Code samples do not work
    • Information is missing
    • Information is incorrect
    • Information is unclear or confusing
    • There is a spelling/grammar error on this page
    • Something else

    Thanks for letting us know! This page has been marked for review based on your feedback.

    If you have time, you can provide more information to help us fix the problem faster.

    Provide more information

    You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:

    You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:

    You've told us there is information missing from this page. Please tell us more about what's missing:

    You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:

    You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:

    You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:

    You've told us this page has a problem. Please tell us more about what's wrong:

    Thank you for helping to make the Unity documentation better!

    Your feedback has been submitted as a ticket for our documentation team to review.

    We are not able to reply to every ticket submitted.

    In This Article
    • Understand the required input
    • Convert an array to a tensor
    • Create an empty tensor
    • Pass inputs to a worker
    • Edit a model
    • Additional resources
    Back to top
    Copyright © 2025 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)