# API Changes ## Nodes, Parameters * `Nodes` is now `NodeVector` * `Parameters` is now `ParameterVector` * `NodeVector`, `ParameterVector`, `AxisVector`, `AxisSet`, `Shape`, `Stride`, `Coordinate`, and `CoordinateDiff` are now classes, not type aliases. ## Changes to ops * The namespace `ngraph::op` is only for actual ops. Helpers have been moved into `ngraph::op::util`: + `BinaryElementwiseArithmetic` + `BinaryElementwiseComparison` + `BinaryElementwise` + `RequiresTensorViewArgs` + `UnaryElementwiseArithmetic` + `UnaryElementwise` Ops defined outside of nGraph core will need to get the base class from `ngraph::op::util` and change the include file to `#include "ngraph/ops/util/requires_tensor_view_args.hpp"`, etc. See any of the core ops for an example. ## Changes to convolution and pooling ops * Backprop ops have been added for convolution ops. * The convolution and pooling ops have had several methods/fields renamed, to reflect a shift in terminology from "images" to "data". Generally this just means that you will have to `s/image_batch/data_batch/` and `s/image_dilation_strides/data_dilation_strides/`. * The following functions have been removed: + `AvgPool`: `get_channel_count get_input_image_physical_shape get_input_image_virtual_shape get_output_image_shape get_batch_size get_image_dimension_count` + `MaxPool`: `get_channel_count get_input_image_shape get_output_image_shape get_batch_size get_image_dimension_count` + `Convolution`: `get_input_channel_count get_output_channel_count get_input_image_physical_shape get_input_image_virtual_shape get_output_image_shape get_window_physical_shape get_window_virtual_shape get_batch_size get_image_dimension_count` All of the above information can be inferred from the shapes and parameters of the op. * The `AvgPool` operator has a new attribute governing whether or not padding-region values are considered when computing a given window's average: `include_padding_in_avg_computation`. One of the class constructors adds this to the parameter list, and the others use a default value of `false` which matches the old behavior. ## Negative convolution padding `Convolution` now allows negative padding. This means that the `padding_below` and `padding_above` arguments now take type `CoordinateDiff` instead of `Shape`. `CoordinateDiff` is an alias for `std::vector<std::ptrdiff_t>`, which "is like `size_t` but is allowed to be negative". Callers may need to be adapted. ## `Parameter` and `Function` no longer take a type argument. To update, remove the passed argument. For example, ```C++ // Old make_shared<Parameter>(make_shared<descriptor::TensorViewType>(element::f32, Shape{2, 4})); // New (remove TensorViewType) make_shared<Parameter>(element::f32, Shape{2, 4}); // Old make_shared<Function>(results, result_type, parameters); // New make_shared<Function>(results, parameters); ``` The runtime::TensorView methods to get_tensor<> and write<T>(std::vector&) have been removed to the unit test directory under utils/test_tool.hpp read_vector and write_vector.