@@ -16,34 +16,44 @@ def dnn_model(params):
16
16
17
17
layer = tf .layers .batch_normalization (x , training = training ) if params .batch_norm else x
18
18
for hidden_size in params .hidden_layers :
19
- layer = tf .layers .dense (layer , units = hidden_size )
19
+ layer = tf .layers .dense (layer , units = hidden_size , activation = tf .nn .relu )
20
+ layer = tf .layers .dropout (layer , params .dropout , training = training ) if params .dropout else layer
20
21
predictions = tf .layers .dense (layer , units = 1 )
21
22
22
23
loss = tf .reduce_mean ((predictions - y ) ** 2 , name = 'loss' )
23
24
optimizer = tf .train .AdamOptimizer (learning_rate = params .learning_rate )
24
25
optimizer .minimize (loss , name = 'minimize' )
25
26
27
+ # Hyper-tuner is generally designed for classification, so it tries to maximize the accuracy.
28
+ # But we have a regression problem. A simple possible metric to emulate the accuracy would be:
29
+ #
30
+ # tf.negative(loss, name='accuracy')
31
+ #
32
+ # But we'll use this one:
33
+ tf .reduce_mean (tf .cast (tf .abs (predictions - y ) < 0.5 , tf .float32 ), name = 'accuracy' )
34
+
26
35
x_train , y_train , x_test , y_test , x_val , y_val = get_wine_data (path = 'temp-wine/data' )
27
36
data = hype .Data (train = hype .DataSet (x_train , y_train ),
28
37
validation = hype .DataSet (x_val , y_val ),
29
38
test = hype .DataSet (x_test , y_test ))
30
39
31
40
def solver_generator (params ):
32
41
solver_params = {
33
- 'batch_size' : 500 ,
34
- 'eval_batch_size' : 500 ,
42
+ 'batch_size' : 1000 ,
43
+ 'eval_batch_size' : 1000 ,
35
44
'epochs' : 20 ,
36
45
'evaluate_test' : True ,
37
- 'eval_flexible' : False ,
46
+ 'eval_flexible' : True ,
38
47
}
39
48
dnn_model (params )
40
49
solver = hype .TensorflowSolver (data = data , hyper_params = params , ** solver_params )
41
50
return solver
42
51
43
52
44
53
hyper_params_spec = hype .spec .new (
45
- batch_norm = True ,
46
- hidden_layers = [10 ],
54
+ batch_norm = hype .spec .random_bool (),
55
+ hidden_layers = [hype .spec .choice (range (8 , 33 ))],
56
+ dropout = hype .spec .uniform (0.5 , 1.0 ),
47
57
learning_rate = 10 ** hype .spec .uniform (- 1 , - 3 ),
48
58
)
49
59
strategy_params = {
0 commit comments