-
Notifications
You must be signed in to change notification settings - Fork 4.3k
Breaking changes in Master compared to beta15
After we shipped beta15, we have mad some breaking changes that is currently in master. This breaking changes will make it to our release candidate 1 soon.
Based on the feedbacks that we got, we are changing some APIs, refactor some code, deprecated old APIs and changing namespaces to a more logical hierarchy. The plan is that after the release Candidate there will be very little breaking change.
Here current breaking changes:
-
NDArrayView's data() method is now a property
-
Namespaces:
- Readers are exposed through
cntk.ionamespace, they no longer imported to the rootCNTKnamespace. - Several functionalities that were under
cntk.utilsare now refactored (removed) into their suitable namespace. Some of the popular ones are- Print progress has moved to
cntk.logging. - Print graph or finding nodes by names moved from
cntk.graphtoCNTK.logging.graph
- Print progress has moved to
- All debugging APIs have moved to
cntk.debugging. - Move profiler APIs to
cntk.debugging. - Losses and metrics have moved to
cntk.lossesandcntk.metricsrespectively. - Former
cntk_learnernamespace is replaced bycntk.learnerswith all learners moved undercntk.learnersnamespace. - trainer, training_session, and distributed have moved to
cntk.trainnamespace. - variables module has moved to cntk root namespace.
-
one_hotfunction is now a static method in Value class. -
value_to_seqandvalue_variable_to_seqfunctions are now a method in Valueclassand renamed toto_seq. - Layers APIs aren't loaded by default, so you need
from cntk.layers import *.-
Inputis gone useinput
-
- Readers are exposed through
-
Evaluating a node that has only the batch axis and no sequence axis, previously always returned the result containing a sequence dimension. This was fixed, i.e., it will now only output the batch axis.
-
Evaluating a node that has a sequence axis, previously returned a list of NumPy arrays when the sequences were of different length, but a single NumPy array containing all sequences, when the sequences were of same length (most of the time, because the sequence axis was not used at all, resulting in all sequences having only one element). This was inconsistent is now fixed, such that whenever a sequence axis is present, the output is a Python list. If your program breaks because of this change, it might be a sign that you specified your input with a sequence axis (the default in
input_variable()), but are not using it. -
adam_sgd is deprecated:
- If you used adam_sgd with low_memory equal True or didn't specify low_memory, then use fsadagrad.
- Otherwise, use adam, which matches the published ADAM method.
-
upper_pad and lower_pad are gone.