Skip to content

Commit ea7fb9b

Browse files
committed
modified the ppo with heuristic and Pong example
1 parent fc86bc3 commit ea7fb9b

18 files changed

+292
-253
lines changed

Assets/UnityTensorflow/Common/Utils/DataBuffer.cs

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public DataInfo(string name, Type type, int[] dimension)
2828
}
2929

3030
[Serializable]
31-
protected struct DataContainer
31+
protected class DataContainer
3232
{
3333

3434
public DataInfo info;
@@ -45,10 +45,7 @@ public DataContainer(DataInfo info, int reservedSize)
4545
this.info = info;
4646
dataList = Array.CreateInstance(info.type, (new int[] { reservedSize }).Concat(info.dimension).ToArray());
4747
}
48-
49-
50-
51-
48+
5249

5350
public void IncreaseArraySize(int sizeToAdd)
5451
{
@@ -57,7 +54,7 @@ public void IncreaseArraySize(int sizeToAdd)
5754

5855
var newArray = Array.CreateInstance(info.type, (new int[] { dataList.GetLength(0) + sizeToAdd }).Concat(info.dimension).ToArray());
5956
int typeSize = Marshal.SizeOf(info.type);
60-
Buffer.BlockCopy(dataList, 0, newArray, 0, dataList.Length * info.unitLength * typeSize);
57+
Buffer.BlockCopy(dataList, 0, newArray, 0, dataList.Length * typeSize);
6158
dataList = newArray;
6259

6360
}
@@ -77,6 +74,19 @@ public int CurrentSize()
7774
public int CurrentCount { get; private set; } = 0;
7875

7976

77+
public DataBuffer(params DataInfo[] dataInfos)
78+
{
79+
80+
MaxCount = 0;
81+
dataset = new Dictionary<string, DataContainer>();
82+
83+
84+
foreach (var i in dataInfos)
85+
{
86+
Debug.Assert(!dataset.ContainsKey(i.name));
87+
dataset[i.name] = new DataContainer(i);
88+
}
89+
}
8090

8191
public DataBuffer(int maxSize, params DataInfo[] dataInfos)
8292
{
@@ -88,7 +98,10 @@ public DataBuffer(int maxSize, params DataInfo[] dataInfos)
8898
foreach (var i in dataInfos)
8999
{
90100
Debug.Assert(!dataset.ContainsKey(i.name));
91-
dataset[i.name] = new DataContainer(i, maxSize);
101+
if(MaxCount > 0)
102+
dataset[i.name] = new DataContainer(i, maxSize);
103+
else
104+
dataset[i.name] = new DataContainer(i);
92105
}
93106
}
94107

@@ -151,10 +164,12 @@ public void AddData(params ValueTuple<string, Array>[] data)
151164
foreach (var k in data)
152165
{
153166
//resize the data container if needed
154-
while(CurrentCount > dataset[k.Item1].CurrentSize())
155-
{
156-
dataset[k.Item1].IncreaseArraySize(dataset[k.Item1].CurrentSize());
157-
}
167+
int currentSize = dataset[k.Item1].CurrentSize();
168+
if(CurrentCount > currentSize * 2)
169+
dataset[k.Item1].IncreaseArraySize(CurrentCount - currentSize);
170+
else if(CurrentCount > currentSize)
171+
dataset[k.Item1].IncreaseArraySize(currentSize);
172+
158173

159174
DataContainer dd = dataset[k.Item1];
160175
int typeSize = Marshal.SizeOf(dd.info.type);

Assets/UnityTensorflow/Examples/3DBall/3DBallNE.unity

Lines changed: 66 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -691,12 +691,12 @@ MonoBehaviour:
691691
vectorActionSpaceType: 1
692692
brainType: 4
693693
CoreBrains:
694-
- {fileID: 1430763440}
695-
- {fileID: 1537357350}
696-
- {fileID: 1709965260}
697-
- {fileID: 1206030199}
698-
- {fileID: 891779459}
699-
instanceID: 72450
694+
- {fileID: 1655782775}
695+
- {fileID: 1783173004}
696+
- {fileID: 1491512661}
697+
- {fileID: 1499967835}
698+
- {fileID: 1909405677}
699+
instanceID: 24670
700700
--- !u!1001 &764818074
701701
Prefab:
702702
m_ObjectHideFlags: 0
@@ -817,42 +817,6 @@ Prefab:
817817
m_RemovedComponents: []
818818
m_ParentPrefab: {fileID: 100100000, guid: ff026d63a00abdc48ad6ddcff89aba04, type: 2}
819819
m_IsPrefabParent: 0
820-
--- !u!114 &891779459
821-
MonoBehaviour:
822-
m_ObjectHideFlags: 0
823-
m_PrefabParentObject: {fileID: 0}
824-
m_PrefabInternal: {fileID: 0}
825-
m_GameObject: {fileID: 0}
826-
m_Enabled: 1
827-
m_EditorHideFlags: 0
828-
m_Script: {fileID: 11500000, guid: 6c70bae3b443c3743a743c3b2837676b, type: 3}
829-
m_Name: (Clone)(Clone)(Clone)(Clone)(Clone)(Clone)
830-
m_EditorClassIdentifier:
831-
brain: {fileID: 667765197}
832-
trainer: {fileID: 580003488}
833-
--- !u!114 &1206030199
834-
MonoBehaviour:
835-
m_ObjectHideFlags: 0
836-
m_PrefabParentObject: {fileID: 0}
837-
m_PrefabInternal: {fileID: 0}
838-
m_GameObject: {fileID: 0}
839-
m_Enabled: 1
840-
m_EditorHideFlags: 0
841-
m_Script: {fileID: 11500000, guid: 8b23992c8eb17439887f5e944bf04a40, type: 3}
842-
m_Name: (Clone)(Clone)(Clone)(Clone)(Clone)(Clone)(Clone)
843-
m_EditorClassIdentifier:
844-
broadcast: 1
845-
graphModel: {fileID: 0}
846-
graphScope:
847-
graphPlaceholders: []
848-
BatchSizePlaceholderName: batch_size
849-
VectorObservationPlacholderName: vector_observation
850-
RecurrentInPlaceholderName: recurrent_in
851-
RecurrentOutPlaceholderName: recurrent_out
852-
VisualObservationPlaceholderName: []
853-
ActionPlaceholderName: action
854-
PreviousActionPlaceholderName: prev_action
855-
brain: {fileID: 0}
856820
--- !u!1 &1397918840
857821
GameObject:
858822
m_ObjectHideFlags: 0
@@ -918,23 +882,6 @@ Transform:
918882
m_Father: {fileID: 0}
919883
m_RootOrder: 0
920884
m_LocalEulerAnglesHint: {x: 20, y: 0, z: 0}
921-
--- !u!114 &1430763440
922-
MonoBehaviour:
923-
m_ObjectHideFlags: 0
924-
m_PrefabParentObject: {fileID: 0}
925-
m_PrefabInternal: {fileID: 0}
926-
m_GameObject: {fileID: 0}
927-
m_Enabled: 1
928-
m_EditorHideFlags: 0
929-
m_Script: {fileID: 11500000, guid: 41e9bda8f3cf1492fa74926a530f6f70, type: 3}
930-
m_Name: (Clone)(Clone)(Clone)(Clone)(Clone)(Clone)(Clone)
931-
m_EditorClassIdentifier:
932-
broadcast: 1
933-
keyContinuousPlayerActions: []
934-
axisContinuousPlayerActions: []
935-
discretePlayerActions: []
936-
defaultAction: 0
937-
brain: {fileID: 667765197}
938885
--- !u!1001 &1450507641
939886
Prefab:
940887
m_ObjectHideFlags: 0
@@ -1026,18 +973,40 @@ Transform:
1026973
m_Father: {fileID: 1583402088}
1027974
m_RootOrder: 2
1028975
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
1029-
--- !u!114 &1537357350
976+
--- !u!114 &1491512661
1030977
MonoBehaviour:
1031978
m_ObjectHideFlags: 0
1032979
m_PrefabParentObject: {fileID: 0}
1033980
m_PrefabInternal: {fileID: 0}
1034981
m_GameObject: {fileID: 0}
1035982
m_Enabled: 1
1036983
m_EditorHideFlags: 0
1037-
m_Script: {fileID: 11500000, guid: 943466ab374444748a364f9d6c3e2fe2, type: 3}
1038-
m_Name: (Clone)(Clone)(Clone)(Clone)(Clone)(Clone)(Clone)
984+
m_Script: {fileID: 11500000, guid: 35813a1be64e144f887d7d5f15b963fa, type: 3}
985+
m_Name: (Clone)(Clone)(Clone)(Clone)(Clone)(Clone)(Clone)(Clone)
986+
m_EditorClassIdentifier:
987+
brain: {fileID: 0}
988+
--- !u!114 &1499967835
989+
MonoBehaviour:
990+
m_ObjectHideFlags: 0
991+
m_PrefabParentObject: {fileID: 0}
992+
m_PrefabInternal: {fileID: 0}
993+
m_GameObject: {fileID: 0}
994+
m_Enabled: 1
995+
m_EditorHideFlags: 0
996+
m_Script: {fileID: 11500000, guid: 8b23992c8eb17439887f5e944bf04a40, type: 3}
997+
m_Name: (Clone)(Clone)(Clone)(Clone)(Clone)(Clone)(Clone)(Clone)
1039998
m_EditorClassIdentifier:
1040999
broadcast: 1
1000+
graphModel: {fileID: 0}
1001+
graphScope:
1002+
graphPlaceholders: []
1003+
BatchSizePlaceholderName: batch_size
1004+
VectorObservationPlacholderName: vector_observation
1005+
RecurrentInPlaceholderName: recurrent_in
1006+
RecurrentOutPlaceholderName: recurrent_out
1007+
VisualObservationPlaceholderName: []
1008+
ActionPlaceholderName: action
1009+
PreviousActionPlaceholderName: prev_action
10411010
brain: {fileID: 0}
10421011
--- !u!1 &1583402087
10431012
GameObject:
@@ -1101,18 +1070,23 @@ MonoBehaviour:
11011070
resetParameters:
11021071
resetParameters: []
11031072
bounceTreshold: 2
1104-
--- !u!114 &1709965260
1073+
--- !u!114 &1655782775
11051074
MonoBehaviour:
11061075
m_ObjectHideFlags: 0
11071076
m_PrefabParentObject: {fileID: 0}
11081077
m_PrefabInternal: {fileID: 0}
11091078
m_GameObject: {fileID: 0}
11101079
m_Enabled: 1
11111080
m_EditorHideFlags: 0
1112-
m_Script: {fileID: 11500000, guid: 35813a1be64e144f887d7d5f15b963fa, type: 3}
1113-
m_Name: (Clone)(Clone)(Clone)(Clone)(Clone)(Clone)(Clone)
1081+
m_Script: {fileID: 11500000, guid: 41e9bda8f3cf1492fa74926a530f6f70, type: 3}
1082+
m_Name: (Clone)(Clone)(Clone)(Clone)(Clone)(Clone)(Clone)(Clone)
11141083
m_EditorClassIdentifier:
1115-
brain: {fileID: 0}
1084+
broadcast: 1
1085+
keyContinuousPlayerActions: []
1086+
axisContinuousPlayerActions: []
1087+
discretePlayerActions: []
1088+
defaultAction: 0
1089+
brain: {fileID: 667765197}
11161090
--- !u!1 &1746325439
11171091
GameObject:
11181092
m_ObjectHideFlags: 0
@@ -1235,6 +1209,19 @@ Prefab:
12351209
m_RemovedComponents: []
12361210
m_ParentPrefab: {fileID: 100100000, guid: ff026d63a00abdc48ad6ddcff89aba04, type: 2}
12371211
m_IsPrefabParent: 0
1212+
--- !u!114 &1783173004
1213+
MonoBehaviour:
1214+
m_ObjectHideFlags: 0
1215+
m_PrefabParentObject: {fileID: 0}
1216+
m_PrefabInternal: {fileID: 0}
1217+
m_GameObject: {fileID: 0}
1218+
m_Enabled: 1
1219+
m_EditorHideFlags: 0
1220+
m_Script: {fileID: 11500000, guid: 943466ab374444748a364f9d6c3e2fe2, type: 3}
1221+
m_Name: (Clone)(Clone)(Clone)(Clone)(Clone)(Clone)(Clone)(Clone)
1222+
m_EditorClassIdentifier:
1223+
broadcast: 1
1224+
brain: {fileID: 0}
12381225
--- !u!1001 &1825513289
12391226
Prefab:
12401227
m_ObjectHideFlags: 0
@@ -1295,6 +1282,19 @@ Prefab:
12951282
m_RemovedComponents: []
12961283
m_ParentPrefab: {fileID: 100100000, guid: ff026d63a00abdc48ad6ddcff89aba04, type: 2}
12971284
m_IsPrefabParent: 0
1285+
--- !u!114 &1909405677
1286+
MonoBehaviour:
1287+
m_ObjectHideFlags: 0
1288+
m_PrefabParentObject: {fileID: 0}
1289+
m_PrefabInternal: {fileID: 0}
1290+
m_GameObject: {fileID: 0}
1291+
m_Enabled: 1
1292+
m_EditorHideFlags: 0
1293+
m_Script: {fileID: 11500000, guid: 6c70bae3b443c3743a743c3b2837676b, type: 3}
1294+
m_Name: (Clone)(Clone)(Clone)(Clone)(Clone)(Clone)(Clone)
1295+
m_EditorClassIdentifier:
1296+
brain: {fileID: 667765197}
1297+
trainer: {fileID: 580003488}
12981298
--- !u!1 &2063801192
12991299
GameObject:
13001300
m_ObjectHideFlags: 0
-371 KB
Binary file not shown.
Binary file not shown.

Assets/UnityTensorflow/Examples/Pong/Data/PongRLHeurcheckpoint_heuristicdata.bytes.meta renamed to Assets/UnityTensorflow/Examples/3DBall/3DBallNECheckpoint_NEData.bytes.meta

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
%YAML 1.1
2+
%TAG !u! tag:unity3d.com,2011:
3+
--- !u!114 &11400000
4+
MonoBehaviour:
5+
m_ObjectHideFlags: 0
6+
m_PrefabParentObject: {fileID: 0}
7+
m_PrefabInternal: {fileID: 0}
8+
m_GameObject: {fileID: 0}
9+
m_Enabled: 1
10+
m_EditorHideFlags: 0
11+
m_Script: {fileID: 11500000, guid: b3b2cffc6f799a841a0dc06b2a622d21, type: 3}
12+
m_Name: PongPPOHeuristicTrainerParams
13+
m_EditorClassIdentifier:
14+
learningRate: 0.004
15+
maxTotalSteps: 2000000
16+
lossLogInterval: 1
17+
saveModelInterval: 50000
18+
rewardDiscountFactor: 0.99
19+
rewardGAEFactor: 0.98
20+
valueLossWeight: 1
21+
timeHorizon: 1000
22+
entropyLossWeight: 0.1
23+
clipEpsilon: 0.2
24+
batchSize: 256
25+
bufferSizeForTrain: 8192
26+
numEpochPerTrain: 10
27+
useHeuristicChance: 1
28+
rewardLogInterval: 50

Assets/UnityTensorflow/Examples/Pong/Data/PongPPOHeuristicTrainerParams.asset.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/UnityTensorflow/Examples/Pong/Data/PongPPOTrainerParams.asset

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,18 @@ MonoBehaviour:
1111
m_Script: {fileID: 11500000, guid: b3b2cffc6f799a841a0dc06b2a622d21, type: 3}
1212
m_Name: PongPPOTrainerParams
1313
m_EditorClassIdentifier:
14-
maxTotalSteps: 100000000
14+
learningRate: 0.004
15+
maxTotalSteps: 1000000
16+
lossLogInterval: 1
17+
saveModelInterval: 50000
1518
rewardDiscountFactor: 0.99
16-
rewardGAEFactor: 0.99
19+
rewardGAEFactor: 0.98
1720
valueLossWeight: 1
18-
entroyLossWeight: 0
21+
timeHorizon: 1000
22+
entropyLossWeight: 0.1
1923
clipEpsilon: 0.2
2024
batchSize: 256
2125
bufferSizeForTrain: 8192
2226
numEpochPerTrain: 10
23-
heuristicBufferSize: 100000
24-
extraBatchTFromHeuristicBuffer: 5
25-
learningRate: 0.01
26-
lossLogInterval: 1
27+
useHeuristicChance: 1
2728
rewardLogInterval: 50
28-
saveModelInterval: 50000
Binary file not shown.

Assets/UnityTensorflow/Examples/Pong/Data/PongRLHeurcheckpoint.bytes.meta

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)