Thanks Jose, I just wanted to check the reasoning here.
You can understand that the code can only tell part of the story. With many constant
values used for tuning ML it is hard to know what the significance might be of any given
value.
Regards
Nathan
On 11 Nov 2019, at 13:45, José Suárez-Varela
<jsuarezv(a)ac.upc.edu> wrote:
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…
<https://github.com/knowledgedefinednetworking/demo-routenet/blob/master/code/routenet_with_link_cap.py#L83>)
we divided by the maximum link capacity (40) in the datasets we used for training
(
https://github.com/knowledgedefinednetworking/NetworkModelingDatasets/tree/…
<https://github.com/knowledgedefinednetworking/NetworkModelingDatasets/tree/master/datasets_v0>).
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_…
<https://github.com/Data-Science-Projects/demo-routenet/blob/master/bin/get_norm_vals_v0.py>.
>
> 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…
<https://github.com/knowledgedefinednetworking/demo-routenet/blob/master/code/routenet_with_link_cap.py#L83>
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…
<https://github.com/knowledgedefinednetworking/demo-routenet/blob/master/demo_notebooks/demo.ipynb>
>>>>
>>>> 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…
<https://github.com/knowledgedefinednetworking/demo-routenet/blob/master/code/routenet_with_link_cap.py#L83>
>>>>
>>>> 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…
<https://github.com/knowledgedefinednetworking/network-modeling-GNN/blob/master/routenet_with_forwarding_nodes/routenet_with_forwarding_nodes.py#L93>
>>>>
>>>> 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
<mailto:Kdn-users@knowledgedefinednetworking.org>
>>>>
https://mail.n3cat.upc.edu/cgi-bin/mailman/listinfo/kdn-users
<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
<https://mail.n3cat.upc.edu/cgi-bin/mailman/listinfo/kdn-users>
>