anchor.diff:  ann_norm_single_input(I) -> I/256.0.
   
   ann_norm_sample_output(AggregatedOutputVector, _QOS) ->
  -    Fac = case norm(AggregatedOutputVector) of
  -        0.0 ->      0.0;
  -        0 ->        0.0;
  -        Norm ->     1.0 / Norm
  -    end,
  -    Fun = fun(W) -> Fac * W end,  % Same vector length of 1 for all samples
  +    Fun = fun(0) -> 0; ({N,S}) -> S/N end, 
       lists:map(Fun, AggregatedOutputVector). 
  +
  +% ann_norm_sample_output(AggregatedOutputVector, _QOS) ->
  +%     Fac = case norm(AggregatedOutputVector) of
  +%         0.0 ->      0.0;
  +%         0 ->        0.0;
  +%         Norm ->     1.0 / Norm
  +%     end,
  +%     Fun = fun(W) -> Fac * W end,  % Same vector length of 1 for all samples
  +%     lists:map(Fun, AggregatedOutputVector). 
   
   % ann_norm_sample_output(AggregatedOutputVector, _QOS) ->
   %   Fac = 1.0 / norm(AggregatedOutputVector),
  
positive.code: 
  %% Format a single sample for ann use (Board size input vector, Board size output vector)
  %% and aggregate into the training table using an input hash
  ann_sample_single(GameTypeId, Input, Move, Score, MTE) ->
      Gain = ann_sample_gain(length(Input), Score, MTE),
      Move1 = Move + 1,           % one based index of move
      F = fun(I) -> 
          Inp=lists:nth(I, Input), 
          if 
              I==Move1 -> Gain;   % move taken in sample
              Inp==32 ->   0;     % alternative legal move
              true ->     -1      % illegal move (occupied)
          end 
      end, 
      Output = lists:map(F, lists:seq(1, length(Input))),
  
negative.code:     Output = ann:predict(Network, NormIn),
      ?Info("play_bot_ann network Output ~p",[Output]),    
      NormIdx = pick_output(Output, NormBoard, Flatten),      % 0-based index for predicted move
      NewIdx = egambo_tictac_sym:denorm_move(Width, Height, NormIdx, Sym),    
      ?Info("play_bot_ann NormIdx, NewIdx (output picked) ~p ~p", [NormIdx, NewIdx]),
      {ok, Idx, NewBoard} = egambo_tictac:put(Gravity, Board, Width, NewIdx, Player),
      ?Info("play_bot_ann Idx, NewBoard ~p ~p", [Idx, binary_to_list(NewBoard)]),
  