-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathfind_max_mini-batch_size.cmd
More file actions
69 lines (52 loc) · 2.42 KB
/
find_max_mini-batch_size.cmd
File metadata and controls
69 lines (52 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
@REM USAGE (for example):
@REM annonet_train_cuda training_data_dir --relative-training-length=2.0 -c 10000 --class-weight=0.0 --image-weight=0.0 --net-width-scaler=2.0
@SET /A MIN_MINIBATCH_SIZE = 2
@SET /A MAX_MINIBATCH_SIZE = 0
@SET /A CURRENT_MINIBATCH_SIZE = 100
@SET /A TEST_STEP_COUNT = 3
@REM increase this parameter to accept a size that is smaller than "optimal"
@REM (and consequently proceed to the actual run a little faster)
@SET /A TOLERANCE = 0
@ECHO.
@GOTO TEST
:INCREASE_MINIBATCH_SIZE_BY_FACTOR_OF_2
@SET /A NEW_MINIBATCH_SIZE = %CURRENT_MINIBATCH_SIZE% * 2
@GOTO MAYBE_INCREASE_MINIBATCH_SIZE
:INCREASE_MINIBATCH_SIZE_HALFWAY
@SET /A NEW_MINIBATCH_SIZE = (%CURRENT_MINIBATCH_SIZE% + %MAX_MINIBATCH_SIZE% + 1) / 2
@GOTO MAYBE_INCREASE_MINIBATCH_SIZE
:MAYBE_INCREASE_MINIBATCH_SIZE
@IF %MAX_MINIBATCH_SIZE% EQU 0 GOTO INCREASE_MINIBATCH_SIZE
@SET /A CURRENT_MINIBATCH_SIZE_INCLUDING_TOLERANCE = %CURRENT_MINIBATCH_SIZE% + %TOLERANCE%
@IF %CURRENT_MINIBATCH_SIZE_INCLUDING_TOLERANCE% GEQ %MAX_MINIBATCH_SIZE% GOTO ACTUAL_RUN
:INCREASE_MINIBATCH_SIZE
@SET /A CURRENT_MINIBATCH_SIZE = %NEW_MINIBATCH_SIZE%
@GOTO TEST
:DECREASE_MINIBATCH_SIZE
@SET /A MAX_MINIBATCH_SIZE = %CURRENT_MINIBATCH_SIZE% - 1
@SET /A CURRENT_MINIBATCH_SIZE = (%MIN_MINIBATCH_SIZE% + %CURRENT_MINIBATCH_SIZE%) / 2
@IF %CURRENT_MINIBATCH_SIZE% EQU %MIN_MINIBATCH_SIZE% GOTO ACTUAL_RUN
@SET /A MIN_MINIBATCH_SIZE_INCLUDING_TOLERANCE = %MIN_MINIBATCH_SIZE% + %TOLERANCE%
@IF %MAX_MINIBATCH_SIZE% GEQ %MIN_MINIBATCH_SIZE_INCLUDING_TOLERANCE% GOTO TEST
@SET /A CURRENT_MINIBATCH_SIZE = %MIN_MINIBATCH_SIZE%
@GOTO ACTUAL_RUN
:TEST
@ECHO Trying mini-batch size %CURRENT_MINIBATCH_SIZE%
@REM make the test call
@%* -b %CURRENT_MINIBATCH_SIZE% --max-total-steps=%TEST_STEP_COUNT% 1> find_max_mini-batch_size_test_log_1.txt 2> find_max_mini-batch_size_test_log_2.txt
@IF %ERRORLEVEL% LSS 0 GOTO ACTUAL_RUN
@IF %ERRORLEVEL% NEQ 0 GOTO DECREASE_MINIBATCH_SIZE
@SET /A MIN_MINIBATCH_SIZE = %CURRENT_MINIBATCH_SIZE%
@IF %MAX_MINIBATCH_SIZE% EQU 0 GOTO INCREASE_MINIBATCH_SIZE_BY_FACTOR_OF_2
@GOTO INCREASE_MINIBATCH_SIZE_HALFWAY
@:DECREASE_MINIBATCH_SIZE_BY_ONE
@SET /A CURRENT_MINIBATCH_SIZE -= 1
@ECHO.
@ECHO Decreased mini-batch size by one, now %CURRENT_MINIBATCH_SIZE%
:ACTUAL_RUN
@REM make the actual call
%* -b %CURRENT_MINIBATCH_SIZE%
@IF %CURRENT_MINIBATCH_SIZE% LEQ 2 GOTO END
@IF %ERRORLEVEL% LSS 0 GOTO END
@IF %ERRORLEVEL% NEQ 0 GOTO DECREASE_MINIBATCH_SIZE_BY_ONE
:END