我对Unity不太熟悉,我的背景更多是机器学习。我计划使用ML Agents,并为其编写一些自定义的Python/TensorFlow脚本。
我想知道是否可以结合硬盘上的数据和Unity环境数据进行训练?例如,除了Unity摄像头的数据外,是否可以将额外的图像数据作为网络的输入?
在示例和文档中我还没有看到类似的内容。
谢谢!
回答:
只要你能用固定长度的Vector3
、Vector2
、float
、int
、bool
、Quaternion
序列,或者固定的一热编码来表达这些信息,那就没问题。只要在CollectObservations
中使用AddVectorObs
添加这些信息即可:
public override void CollectObservations(){ //内部信息 AddVectorObs(gameObject.transform.rotation.z); AddVectorObs(gameObject.transform.position); Vector3 externalInfo1 = ExternalInfoGetter.StaticGetInfo1(); AddVectorObs(externalInfo1); float externalInfo2 = ExternalInfoGetter.StaticGetInfo2(); AddVectorObs(externalInfo2);}
请参阅关于设计代理的文档以获取更多信息,包括如何实现一热编码特征以及关于输入归一化的建议。