Hello Nathan,
Note that normalization is just a mechanism that helps optimize the
learning process (e.g., faster convergence, more stability). There is
some flexibility to select normalization parameters that lead to good
performance. For simplicity, in the original implementation of RouteNet
with link capacities
(
https://github.com/knowledgedefinednetworking/demo-routenet/blob/master/cod…)
we divided by the maximum link capacity (40) in the datasets we used for
training
(
https://github.com/knowledgedefinednetworking/NetworkModelingDatasets/tree/…).
However, it should work also by normalizing with the mean and standard
deviation measured from the datasets.
Regards,
José
El 9/11/19 a las 20:53, Nathan Sowatskey escribió:
Hi
I have looked into this again, with the code in
https://github.com/Data-Science-Projects/demo-routenet/blob/master/bin/get_….
I think that the standard deviation value used for the link capacity
normalisation in the routenet_with_link_cap.p
<https://github.com/knowledgedefinednetworking/demo-routenet/blob/master/code/routenet_with_link_cap.py#L83>y code
is wrong. The value I get for the standard deviation of the link
capacity is ~15. Whereas the original
https://github.com/knowledgedefinednetworking/demo-routenet/blob/master/cod… has
a value of 40. Please see below.
I can see that you have corrected this in later code samples though.
What are your thoughts please?
Many thanks
Nathan
*Feature*
*Mean*
*Std. Deviation*
*Max*
*Min*
Delay
0.37
0.5
7.785
0.023
Jitter
0.09
0.21
3.314
0.0
Traffic
0.35
0.22
1.194
0.029
Link Capacity
22.41
14.78
40.0
10.0
Table 7- Mean, Standard Deviation, Max and Min for nsfnetbw and geant2bw
*Feature*
*Mean*
*Std. Deviation*
*Max*
*Min*
Delay
0.4
0.61
10.927
0.022
Jitter
0.09
0.22
4.658
0.0
Traffic
0.19
0.15
1.194
0.014
Link Capacity
22.4
14.77
40.0
10.0
Table 8- Mean, Standard Deviation, Max and Min for nsfnetbw, geant2bw
and synth50bw
The values from the original demo code are shown in Table 9 - Original
normalisation values.
*Feature*
*Mean*
*Std. Deviation*
Delay
0.37
0.54
Traffic
0.17
0.13
Link Capacity
25
40
Table 9- Original normalisation values
On 25 Sep 2019, at 13:56, Nathan Sowatskey
<nathan(a)nathan.to
<mailto:nathan@nathan.to>> wrote:
Many thanks. I had planned to factor the normalisation code into
discrete functions, so this makes sense. That way I can run different
tests with different normalisation strategies.
Regards
Nathan
On 25 Sep 2019, at 12:06, Jose Suárez-Varela
<jsuarezv(a)ac.upc.edu
<mailto:jsuarezv@ac.upc.edu>> wrote:
Hello Nathan,
The normalization may be considered a configurable parameter in
RouteNet. You may use the normalization function that is more
convenient depending on your training data. This means that it is
not necessary to apply always a linear function to normalize the
data. The only condition is that during the inference you must apply
the opposite transformation to the output.
In the case of RouteNet with forwarding nodes, this is a work in
progress where we have considered to use a logarithmic function to
normalize the delay data and assess if the model fits better.
Regards,
José
El 22/09/2019 a las 17:27, Nathan Sowatskey escribió:
> Hi
>
> In the demo code, for example in:
>
>
https://github.com/knowledgedefinednetworking/demo-routenet/blob/master/dem…
>
> A form of normalisation is applied:
>
> predictions = 0.54*preds + 0.37
>
> This is consistent with the parse() function here:
>
>
https://github.com/knowledgedefinednetworking/demo-routenet/blob/master/cod…
>
> if k == 'delay':
> features[k] = (features[k] - 0.37) / 0.54
> if k == 'traffic':
> features[k] = (features[k] - 0.17) / 0.13
> if k == 'link_capacity':
> features[k] = (features[k] - 25.0) / 40.0
>
> There is another case here:
>
>
https://github.com/knowledgedefinednetworking/network-modeling-GNN/blob/mas…
>
> if k == 'delay':
> features[k] = (tf.math.log(features[k]) + 1.78) / 0.93
> if k == 'traffic':
> features[k] = (features[k] - 0.28) / 0.15
> if k == 'jitter':
> features[k] = (features[k] - 1.5) / 1.5
> if k == 'link_capacity':
> features[k] = (features[k] - 27.0) / 14.86
> if k == 'queue_sizes':
> features[k] = (features[k] - 16.5) / 15.5
>
> What is the basis for this normalisation and those specific
> constants please?
>
> Why does the normalisation in routenet_with_link_cap and
> routenet_with_forwarding_nodes differ?
>
> Many thanks
>
> Nathan
>
> _______________________________________________
> Kdn-users mailing list
> Kdn-users(a)knowledgedefinednetworking.org
>
https://mail.n3cat.upc.edu/cgi-bin/mailman/listinfo/kdn-users
_______________________________________________
Kdn-users mailing list
Kdn-users(a)knowledgedefinednetworking.org
<mailto:Kdn-users@knowledgedefinednetworking.org>
https://mail.n3cat.upc.edu/cgi-bin/mailman/listinfo/kdn-users