3.8 KiB
Frequently Asked Questions
Scripting Runtime Environment not setup correctly
If you haven't switched your scripting runtime version from .NET 3.5 to .NET 4.6 or .NET 4.x, you will see such error message:
error CS1061: Type `System.Text.StringBuilder' does not contain a definition for `Clear' and no extension method `Clear' of type `System.Text.StringBuilder' could be found. Are you missing an assembly reference?
This is because .NET 3.5 doesn't support method Clear() for StringBuilder, refer to Setting Up The ML-Agents Toolkit Within Unity for solution.
TensorFlowSharp flag not turned on
If you have already imported the TensorFlowSharp plugin, but haven't set ENABLE_TENSORFLOW flag for your scripting define symbols, you will see the following error message:
UnityAgentsException: The brain 3DBallLearning was set to inference mode but the TensorFlow library is not present in the Unity project.
This error message occurs because the TensorFlowSharp plugin won't be used without the ENABLE_TENSORFLOW flag, refer to Setting Up The ML-Agents Toolkit Within Unity for solution.
Environment Permission Error
If you directly import your Unity environment without building it in the editor, you might need to give it additional permissions to execute it.
If you receive such a permission error on macOS, run:
chmod -R 755 *.app
or on Linux:
chmod -R 755 *.x86_64
On Windows, you can find instructions.
Environment Connection Timeout
If you are able to launch the environment from UnityEnvironment
but then
receive a timeout error like this:
UnityAgentsException: The Communicator was unable to connect. Please make sure the External process is ready to accept communication with Unity.
There may be a number of possible causes:
- Cause: There may be no LearningBrain with
Control
option checked in theBroadcast Hub
of the Academy. In this case, the environment will not attempt to communicate with Python. Solution: ClickAdd New
in your Academy'sBroadcast Hub
, and drag your LearningBrain asset into theBrains
field, and check theControl
toggle. Also you need to assign this LearningBrain asset to all of the Agents you wish to do training on. - Cause: On OSX, the firewall may be preventing communication with the environment. Solution: Add the built environment binary to the list of exceptions on the firewall by following instructions.
- Cause: An error happened in the Unity Environment preventing communication. Solution: Look into the log files generated by the Unity Environment to figure what error happened.
- Cause: You have assigned HTTP_PROXY and HTTPS_PROXY values in your environment variables. Solution: Remove these values and try again.
Communication port {} still in use
If you receive an exception "Couldn't launch new environment because communication port {} is still in use. "
, you can change the worker number in
the Python script when calling
UnityEnvironment(file_name=filename, worker_id=X)
Mean reward : nan
If you receive a message Mean reward : nan
when attempting to train a model
using PPO, this is due to the episodes of the Learning Environment not
terminating. In order to address this, set Max Steps
for either the Academy or
Agents within the Scene Inspector to a value greater than 0. Alternatively, it
is possible to manually set done
conditions for episodes from within scripts
for custom episode-terminating events.
Problems with training on AWS
Please refer to Training on Amazon Web Service FAQ