Unity 机器学习代理工具包 (ML-Agents) 是一个开源项目,它使游戏和模拟能够作为训练智能代理的环境。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

80 行
2.7 KiB

using Unity.MLAgents.SideChannels;
namespace Unity.MLAgents
{
/// <summary>
/// Determines the behavior of how multiple stats within the same summary period are combined.
/// </summary>
public enum StatAggregationMethod
{
/// <summary>
/// Values within the summary period are averaged before reporting.
/// </summary>
Average = 0,
/// <summary>
/// Only the most recent value is reported.
/// To avoid conflicts when training with multiple concurrent environments, only
/// stats from worker index 0 will be tracked.
/// </summary>
MostRecent = 1,
/// <summary>
/// Values within the summary period are summed up before reporting.
/// </summary>
Sum = 2,
/// <summary>
/// Values within the summary period are reported as a histogram.
/// </summary>
Histogram = 3
}
/// <summary>
/// Add stats (key-value pairs) for reporting. These values will sent these to a StatsReporter
/// instance, which means the values will appear in the TensorBoard summary, as well as trainer
/// gauges. You can nest stats in TensorBoard by adding "/" in the name (e.g. "Agent/Health"
/// and "Agent/Wallet"). Note that stats are only written to TensorBoard each summary_frequency
/// steps (a trainer configuration). If a stat is received multiple times, within that period
/// then the values will be aggregated using the <see cref="StatAggregationMethod"/> provided.
/// </summary>
public sealed class StatsRecorder
{
/// <summary>
/// The side channel that is used to receive the new parameter values.
/// </summary>
readonly StatsSideChannel m_Channel;
/// <summary>
/// Constructor.
/// </summary>
internal StatsRecorder()
{
m_Channel = new StatsSideChannel();
SideChannelManager.RegisterSideChannel(m_Channel);
}
/// <summary>
/// Add a stat value for reporting.
/// </summary>
/// <param name="key">The stat name.</param>
/// <param name="value">
/// The stat value. You can nest stats in TensorBoard by using "/".
/// </param>
/// <param name="aggregationMethod">
/// How multiple values sent in the same summary window should be treated.
/// </param>
public void Add(
string key,
float value,
StatAggregationMethod aggregationMethod = StatAggregationMethod.Average)
{
m_Channel.AddStat(key, value, aggregationMethod);
}
internal void Dispose()
{
SideChannelManager.UnregisterSideChannel(m_Channel);
}
}
}