anchor.diff:              [] ->
                   L = layer_default(Width, Height, Run, Gravity, Periodic),
                   ?Info("Creating random Layers ~p", [L]),  
  -                {L, ann:create_neural_network(L), learning, <<>>, <<>>};
  +                {L, ann:create_neural_network(L, ?ANN_ACTIVATION), learning, <<>>, <<>>};
               [#egTicTacAnnModel{layers=L, weights=W, version=V, info=I}] ->
  -                {L, ann:create_neural_network(L, lists:flatten(W)), playing, V, I}
  +                {L, ann:create_neural_network(L, lists:flatten(W), ?ANN_ACTIVATION), playing, V, I}
           end,
           State = #state{ bid=?MODULE 
                         , tid=GameTypeId
  
positive.code: ann_norm_sample_output(O, QOS) ->
      Fun = fun(W) -> W/QOS end,
      lists:map(Fun, O). 
  
  
  init([GameTypeId]) ->
      Result = try
  
negative.code: -define(ANN_MODEL_OPTS, [{record_name, egTicTacAnnModel}]).        
  -define(ANN_TRAIN_OPTS, [{record_name, egTicTacAnnSample}, {type, ordered_set}]).        
  -define(ANN_TEST_OPTS,  [{record_name, egTicTacAnnSample}, {type, ordered_set}]).        
  
  -define(ANN_ACTIVATION, sigmoid).   % relu or sigmoid
  -define(ANN_HIDDEN_BREATH, 2.0).    % Number of neurons in hidden layer = ROUND(board size * ?ANN_HIDDEN_BREATH)
  -define(ANN_EXTRA_LAYERS, 2).       % Number of total layers = board width + ?ANN_EXTRA_LAYERS (inluding Input and Output Layers)
  
  -define(ANN_NO_TEST_SAMPLES, {error, <<"No test samples found">>}).
  -define(ANN_BAD_OUTPUT, {error, <<"Bad Network Output">>}).
  -define(ANN_NOT_LEARNING, {error, <<"Network is not in learning mode">>}).
  -define(ANN_NOT_PLAYING, {error, <<"Network is not in playing mode">>}).
  -define(ANN_BAD_RATE, {error, <<"Invalid learning rate for training">>}).
  
  
  -record(egTicTacAnnModel,   { tid               :: egGameTypeId()
                              , version = <<>>    :: binary()    % network version name
  