Skip to content

Commit e6410e4

Browse files
author
Chris Elion
authored
Merge pull request #2514 from Unity-Technologies/hotfix-0.9.3
Hotfix 0.9.3
2 parents 67ab5d4 + cc6c22f commit e6410e4

File tree

9 files changed

+72
-24
lines changed

9 files changed

+72
-24
lines changed

UnitySDK/Assets/ML-Agents/Examples/BananaCollectors/Scenes/BananaIL.unity

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -719,7 +719,11 @@ MonoBehaviour:
719719
timeScale: 1
720720
targetFrameRate: 60
721721
resetParameters:
722-
resetParameters: []
722+
resetParameters:
723+
- key: laser_length
724+
value: 1
725+
- key: agent_scale
726+
value: 1
723727
agents: []
724728
listArea: []
725729
totalScore: 0

UnitySDK/Assets/ML-Agents/Examples/BananaCollectors/Scripts/BananaAgent.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class BananaAgent : Agent
3030
public bool contribute;
3131
private RayPerception3D rayPer;
3232
public bool useVectorObs;
33-
33+
3434

3535
public override void InitializeAgent()
3636
{
@@ -106,7 +106,7 @@ public void MoveAgent(float[] act)
106106
var rightAxis = (int)act[1];
107107
var rotateAxis = (int)act[2];
108108
var shootAxis = (int)act[3];
109-
109+
110110
switch (forwardAxis)
111111
{
112112
case 1:
@@ -116,7 +116,7 @@ public void MoveAgent(float[] act)
116116
dirToGo = -transform.forward;
117117
break;
118118
}
119-
119+
120120
switch (rightAxis)
121121
{
122122
case 1:
@@ -134,7 +134,7 @@ public void MoveAgent(float[] act)
134134
break;
135135
case 2:
136136
rotateDir = transform.up;
137-
break;
137+
break;
138138
}
139139
switch (shootAxis)
140140
{
@@ -279,15 +279,16 @@ public override void AgentOnDone()
279279

280280
public void SetLaserLengths()
281281
{
282-
laser_length = myAcademy.resetParameters["laser_length"];
282+
laser_length = myAcademy.resetParameters.TryGetValue("laser_length", out laser_length) ? laser_length: 1.0f;
283283
}
284284

285285
public void SetAgentScale()
286286
{
287-
var agent_scale = myAcademy.resetParameters["agent_scale"];
288-
gameObject.transform.localScale = new Vector3(agent_scale, agent_scale, agent_scale);
287+
float agentScale;
288+
agentScale = myAcademy.resetParameters.TryGetValue("agent_scale", out agentScale) ? agentScale : 1.0f;
289+
gameObject.transform.localScale = new Vector3(agentScale, agentScale, agentScale);
289290
}
290-
291+
291292
public void SetResetParameters()
292293
{
293294
SetLaserLengths();

gym-unity/setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44

55
setup(
66
name="gym_unity",
7-
version="0.4.5",
7+
version="0.4.6",
88
description="Unity Machine Learning Agents Gym Interface",
99
license="Apache License 2.0",
1010
author="Unity Technologies",
1111
author_email="[email protected]",
1212
url="https://github.com/Unity-Technologies/ml-agents",
1313
packages=find_packages(),
14-
install_requires=["gym", "mlagents_envs==0.9.2"],
14+
install_requires=["gym", "mlagents_envs==0.9.3"],
1515
)

ml-agents-envs/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setup(
77
name="mlagents_envs",
8-
version="0.9.2",
8+
version="0.9.3",
99
description="Unity Machine Learning Agents Interface",
1010
url="https://github.com/Unity-Technologies/ml-agents",
1111
author="Unity Technologies",

ml-agents/mlagents/trainers/rl_trainer.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ class RLTrainer(Trainer):
3636

3737
def __init__(self, *args, **kwargs):
3838
super(RLTrainer, self).__init__(*args, **kwargs)
39-
self.step = 0
4039
# Make sure we have at least one reward_signal
4140
if not self.trainer_parameters["reward_signals"]:
4241
raise UnityTrainerException(

ml-agents/mlagents/trainers/tests/mock_brain.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,13 @@ def setup_mock_unityenvironment(mock_env, mock_brain, mock_braininfo):
9191
:Mock mock_brain: A mock Brain object that specifies the params of this environment.
9292
:Mock mock_braininfo: A mock BrainInfo object that will be returned at each step and reset.
9393
"""
94+
brain_name = mock_brain.brain_name
9495
mock_env.return_value.academy_name = "MockAcademy"
95-
mock_env.return_value.brains = {"MockBrain": mock_brain}
96-
mock_env.return_value.external_brain_names = ["MockBrain"]
97-
mock_env.return_value.brain_names = ["MockBrain"]
98-
mock_env.return_value.reset.return_value = {"MockBrain": mock_braininfo}
99-
mock_env.return_value.step.return_value = {"MockBrain": mock_braininfo}
96+
mock_env.return_value.brains = {brain_name: mock_brain}
97+
mock_env.return_value.external_brain_names = [brain_name]
98+
mock_env.return_value.brain_names = [brain_name]
99+
mock_env.return_value.reset.return_value = {brain_name: mock_braininfo}
100+
mock_env.return_value.step.return_value = {brain_name: mock_braininfo}
100101

101102

102103
def simulate_rollout(env, policy, buffer_init_samples):

ml-agents/mlagents/trainers/tests/test_bc.py

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
def dummy_config():
1919
return yaml.safe_load(
2020
"""
21-
hidden_units: 128
21+
hidden_units: 32
2222
learning_rate: 3.0e-4
23-
num_layers: 2
23+
num_layers: 1
2424
use_recurrent: false
2525
sequence_length: 32
2626
memory_size: 32
@@ -32,8 +32,8 @@ def dummy_config():
3232
)
3333

3434

35-
@mock.patch("mlagents.envs.UnityEnvironment")
36-
def test_bc_trainer(mock_env, dummy_config):
35+
def create_bc_trainer(dummy_config):
36+
mock_env = mock.Mock()
3737
mock_brain = mb.create_mock_3dball_brain()
3838
mock_braininfo = mb.create_mock_braininfo(num_agents=12, num_vector_observations=8)
3939
mb.setup_mock_unityenvironment(mock_env, mock_brain, mock_braininfo)
@@ -49,12 +49,54 @@ def test_bc_trainer(mock_env, dummy_config):
4949
mock_brain, trainer_parameters, training=True, load=False, seed=0, run_id=0
5050
)
5151
trainer.demonstration_buffer = mb.simulate_rollout(env, trainer.policy, 100)
52+
return trainer, env
53+
54+
55+
def test_bc_trainer_step(dummy_config):
56+
trainer, env = create_bc_trainer(dummy_config)
57+
# Test get_step
58+
assert trainer.get_step == 0
59+
# Test update policy
5260
trainer.update_policy()
5361
assert len(trainer.stats["Losses/Cloning Loss"]) > 0
62+
# Test increment step
5463
trainer.increment_step(1)
5564
assert trainer.step == 1
5665

5766

67+
def test_bc_trainer_add_proc_experiences(dummy_config):
68+
trainer, env = create_bc_trainer(dummy_config)
69+
# Test add_experiences
70+
returned_braininfo = env.step()
71+
trainer.add_experiences(
72+
returned_braininfo, returned_braininfo, {}
73+
) # Take action outputs is not used
74+
for agent_id in returned_braininfo["Ball3DBrain"].agents:
75+
assert trainer.evaluation_buffer[agent_id].last_brain_info is not None
76+
assert trainer.episode_steps[agent_id] > 0
77+
assert trainer.cumulative_rewards[agent_id] > 0
78+
# Test process_experiences by setting done
79+
returned_braininfo["Ball3DBrain"].local_done = 12 * [True]
80+
trainer.process_experiences(returned_braininfo, returned_braininfo)
81+
for agent_id in returned_braininfo["Ball3DBrain"].agents:
82+
assert trainer.episode_steps[agent_id] == 0
83+
assert trainer.cumulative_rewards[agent_id] == 0
84+
85+
86+
def test_bc_trainer_end_episode(dummy_config):
87+
trainer, env = create_bc_trainer(dummy_config)
88+
returned_braininfo = env.step()
89+
trainer.add_experiences(
90+
returned_braininfo, returned_braininfo, {}
91+
) # Take action outputs is not used
92+
trainer.process_experiences(returned_braininfo, returned_braininfo)
93+
# Should set everything to 0
94+
trainer.end_episode()
95+
for agent_id in returned_braininfo["Ball3DBrain"].agents:
96+
assert trainer.episode_steps[agent_id] == 0
97+
assert trainer.cumulative_rewards[agent_id] == 0
98+
99+
58100
@mock.patch("mlagents.envs.UnityEnvironment.executable_launcher")
59101
@mock.patch("mlagents.envs.UnityEnvironment.get_communicator")
60102
def test_bc_policy_evaluate(mock_communicator, mock_launcher, dummy_config):

ml-agents/mlagents/trainers/trainer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ def __init__(
5959
self.summary_writer = tf.summary.FileWriter(self.summary_path)
6060
self._reward_buffer: Deque[float] = deque(maxlen=reward_buff_cap)
6161
self.policy: Policy = None
62+
self.step: int = 0
6263

6364
def check_param_keys(self):
6465
for k in self.param_keys:

ml-agents/setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
setup(
1212
name="mlagents",
13-
version="0.9.2",
13+
version="0.9.3",
1414
description="Unity Machine Learning Agents",
1515
long_description=long_description,
1616
long_description_content_type="text/markdown",
@@ -29,7 +29,7 @@
2929
),
3030
zip_safe=False,
3131
install_requires=[
32-
"mlagents_envs==0.9.2",
32+
"mlagents_envs==0.9.3",
3333
"tensorflow>=1.7,<1.8",
3434
"Pillow>=4.2.1",
3535
"matplotlib",

0 commit comments

Comments
 (0)