|
a |
|
b/examples/legacy/helpers.py |
|
|
1 |
from keras.models import Sequential, Model |
|
|
2 |
from keras.layers import Dense, Activation, Flatten, Input, concatenate |
|
|
3 |
|
|
|
4 |
def policy_nn(shape_in, shape_out, hidden_layers = 3, hidden_size = 32): |
|
|
5 |
actor = Sequential() |
|
|
6 |
actor.add(Flatten(input_shape=(1,) + (shape_in, ))) |
|
|
7 |
for i in range(hidden_layers): |
|
|
8 |
actor.add(Dense(hidden_size)) |
|
|
9 |
actor.add(Activation('relu')) |
|
|
10 |
actor.add(Dense(shape_out)) |
|
|
11 |
actor.add(Activation('sigmoid')) |
|
|
12 |
return actor |
|
|
13 |
|
|
|
14 |
def q_nn(nb_obs, nb_act, hidden_layers = 3, hidden_size = 64): |
|
|
15 |
action_input = Input(shape=(nb_act, ), name='action_input') |
|
|
16 |
observation_input = Input(shape=(1,) + (nb_obs, ), name='observation_input') |
|
|
17 |
flattened_observation = Flatten()(observation_input) |
|
|
18 |
x = concatenate([action_input, flattened_observation]) |
|
|
19 |
for i in range(hidden_layers): |
|
|
20 |
x = Dense(hidden_size)(x) |
|
|
21 |
x = Activation('relu')(x) |
|
|
22 |
x = Dense(1)(x) |
|
|
23 |
x = Activation('linear')(x) |
|
|
24 |
critic = Model(inputs=[action_input, observation_input], outputs=x) |
|
|
25 |
return critic, action_input |