Merge pull request !22585 from zuochuanyong/adaptive_avgpool2d_gradtags/v1.5.0-rc1
| @@ -0,0 +1,181 @@ | |||
| /** | |||
| * Copyright 2021 Huawei Technologies Co., Ltd | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| * You may obtain a copy of the License at | |||
| * | |||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||
| * | |||
| * Unless required by applicable law or agreed to in writing, software | |||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| * See the License for the specific language governing permissions and | |||
| * limitations under the License. | |||
| */ | |||
| #include "backend/kernel_compiler/gpu/cuda_impl/adaptive_avg_pool2d_grad_impl.cuh" | |||
| __device__ inline uint start_index(uint a, uint b, uint c) { | |||
| return floorf(__uint2float_rn(a * c) / __uint2float_rn(b)); | |||
| } | |||
| __device__ inline uint end_index(uint a, uint b, uint c) { | |||
| return ceilf(__uint2float_rn((a + 1) * c) / __uint2float_rn(b)); | |||
| } | |||
| template <typename T> | |||
| __global__ void AdaptiveAvgPool2DGradKernel(const uint size, const uint input_height, const uint input_width, | |||
| const uint output_height, const uint output_width, T *input_data, | |||
| T *output_data) { | |||
| for (uint c = blockIdx.x * blockDim.x + threadIdx.x; c < size; c += gridDim.x * blockDim.x) { | |||
| T *input_ptr = input_data + c * input_height * input_width; | |||
| T *output_ptr = output_data + c * output_height * output_width; | |||
| size_t output_size = output_height * output_width; | |||
| for (size_t i = 0; i < output_size; i++) { | |||
| output_ptr[i] = 0; | |||
| } | |||
| for (uint ih = 0; ih < input_height; ih++) { | |||
| uint oh0 = start_index(ih, input_height, output_height); | |||
| uint oh1 = end_index(ih, input_height, output_height); | |||
| uint kh = oh1 - oh0; | |||
| for (uint iw = 0; iw < input_width; iw++) { | |||
| uint ow0 = start_index(iw, input_width, output_width); | |||
| uint ow1 = end_index(iw, input_width, output_width); | |||
| uint kw = ow1 - ow0; | |||
| T delta = input_ptr[ih * input_width + iw] / (kh * kw); | |||
| for (uint oh = oh0; oh < oh1; oh++) { | |||
| for (uint ow = ow0; ow < ow1; ow++) { | |||
| output_ptr[oh * output_width + ow] += delta; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| template <> | |||
| __global__ void AdaptiveAvgPool2DGradKernel(const uint size, const uint input_height, const uint input_width, | |||
| const uint output_height, const uint output_width, float *input_data, | |||
| float *output_data) { | |||
| for (uint c = blockIdx.x * blockDim.x + threadIdx.x; c < size; c += gridDim.x * blockDim.x) { | |||
| float *input_ptr = input_data + c * input_height * input_width; | |||
| float *output_ptr = output_data + c * output_height * output_width; | |||
| size_t output_size = output_height * output_width; | |||
| for (size_t i = 0; i < output_size; i++) { | |||
| output_ptr[i] = 0; | |||
| } | |||
| for (uint ih = 0; ih < input_height; ih++) { | |||
| uint oh0 = start_index(ih, input_height, output_height); | |||
| uint oh1 = end_index(ih, input_height, output_height); | |||
| uint kh = oh1 - oh0; | |||
| for (uint iw = 0; iw < input_width; iw++) { | |||
| uint ow0 = start_index(iw, input_width, output_width); | |||
| uint ow1 = end_index(iw, input_width, output_width); | |||
| uint kw = ow1 - ow0; | |||
| float delta = input_ptr[ih * input_width + iw] / __uint2float_rn(kh * kw); | |||
| for (uint oh = oh0; oh < oh1; oh++) { | |||
| for (uint ow = ow0; ow < ow1; ow++) { | |||
| output_ptr[oh * output_width + ow] += delta; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| template <> | |||
| __global__ void AdaptiveAvgPool2DGradKernel(const uint size, const uint input_height, const uint input_width, | |||
| const uint output_height, const uint output_width, half *input_data, | |||
| half *output_data) { | |||
| for (uint c = blockIdx.x * blockDim.x + threadIdx.x; c < size; c += gridDim.x * blockDim.x) { | |||
| half *input_ptr = input_data + c * input_height * input_width; | |||
| half *output_ptr = output_data + c * output_height * output_width; | |||
| size_t output_size = output_height * output_width; | |||
| for (size_t i = 0; i < output_size; i++) { | |||
| output_ptr[i] = 0; | |||
| } | |||
| for (uint ih = 0; ih < input_height; ih++) { | |||
| uint oh0 = start_index(ih, input_height, output_height); | |||
| uint oh1 = end_index(ih, input_height, output_height); | |||
| uint kh = oh1 - oh0; | |||
| for (uint iw = 0; iw < input_width; iw++) { | |||
| uint ow0 = start_index(iw, input_width, output_width); | |||
| uint ow1 = end_index(iw, input_width, output_width); | |||
| uint kw = ow1 - ow0; | |||
| half delta = input_ptr[ih * input_width + iw] / __uint2half_rn(kh * kw); | |||
| for (uint oh = oh0; oh < oh1; oh++) { | |||
| for (uint ow = ow0; ow < ow1; ow++) { | |||
| output_ptr[oh * output_width + ow] += delta; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| template <> | |||
| __global__ void AdaptiveAvgPool2DGradKernel(const uint size, const uint input_height, const uint input_width, | |||
| const uint output_height, const uint output_width, double *input_data, | |||
| double *output_data) { | |||
| for (uint c = blockIdx.x * blockDim.x + threadIdx.x; c < size; c += gridDim.x * blockDim.x) { | |||
| double *input_ptr = input_data + c * input_height * input_width; | |||
| double *output_ptr = output_data + c * output_height * output_width; | |||
| size_t output_size = output_height * output_width; | |||
| for (size_t i = 0; i < output_size; i++) { | |||
| output_ptr[i] = 0; | |||
| } | |||
| for (uint ih = 0; ih < input_height; ih++) { | |||
| uint oh0 = start_index(ih, input_height, output_height); | |||
| uint oh1 = end_index(ih, input_height, output_height); | |||
| uint kh = oh1 - oh0; | |||
| for (uint iw = 0; iw < input_width; iw++) { | |||
| uint ow0 = start_index(iw, input_width, output_width); | |||
| uint ow1 = end_index(iw, input_width, output_width); | |||
| uint kw = ow1 - ow0; | |||
| double delta = input_ptr[ih * input_width + iw] / __uint2double_rn(kh * kw); | |||
| for (uint oh = oh0; oh < oh1; oh++) { | |||
| for (uint ow = ow0; ow < ow1; ow++) { | |||
| output_ptr[oh * output_width + ow] += delta; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| template <typename T> | |||
| void ApplyAdaptiveAvgPool2DGrad(const uint size, const uint input_height, const uint input_width, | |||
| const uint output_height, const uint output_width, T *input_data, | |||
| T *output_data, cudaStream_t cuda_stream) { | |||
| AdaptiveAvgPool2DGradKernel<<<GET_BLOCKS(size), GET_THREADS, 0, cuda_stream>>>( | |||
| size, input_height, input_width, output_height, output_width, input_data, output_data); | |||
| } | |||
| template void ApplyAdaptiveAvgPool2DGrad<float>(const uint size, const uint input_height, const uint input_width, | |||
| const uint output_height, const uint output_width, float *input_data, | |||
| float *output_data, cudaStream_t cuda_stream); | |||
| template void ApplyAdaptiveAvgPool2DGrad<half>(const uint size, const uint input_height, const uint input_width, | |||
| const uint output_height, const uint output_width, half *input_data, | |||
| half *output_data, cudaStream_t cuda_stream); | |||
| template void ApplyAdaptiveAvgPool2DGrad<double>(const uint size, const uint input_height, const uint input_width, | |||
| const uint output_height, const uint output_width, double *input_data, | |||
| double *output_data, cudaStream_t cuda_stream); | |||
| @@ -0,0 +1,26 @@ | |||
| /** | |||
| * Copyright 2021 Huawei Technologies Co., Ltd | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| * You may obtain a copy of the License at | |||
| * | |||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||
| * | |||
| * Unless required by applicable law or agreed to in writing, software | |||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| * See the License for the specific language governing permissions and | |||
| * limitations under the License. | |||
| */ | |||
| #ifndef MINDSPORE_CCSRC_KERNEL_GPU_CUDA_IMP_ADAPTIVE_AVGPOOL2D_GRAD_IMPL_H_ | |||
| #define MINDSPORE_CCSRC_KERNEL_GPU_CUDA_IMP_ADAPTIVE_AVGPOOL2D_GRAD_IMPL_H_ | |||
| #include "runtime/device/gpu/cuda_common.h" | |||
| template <typename T> | |||
| void ApplyAdaptiveAvgPool2DGrad(const uint size, const uint input_height, const uint input_width, | |||
| const uint output_height, const uint output_width, T *input_data, | |||
| T *output_data, cudaStream_t cuda_stream); | |||
| #endif // MINDSPORE_CCSRC_KERNEL_GPU_CUDA_IMP_ADAPTIVE_AVGPOOL2D_GRAD_IMPL_H_ | |||
| @@ -0,0 +1,34 @@ | |||
| /** | |||
| * Copyright 2021 Huawei Technologies Co., Ltd | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| * You may obtain a copy of the License at | |||
| * | |||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||
| * | |||
| * Unless required by applicable law or agreed to in writing, software | |||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| * See the License for the specific language governing permissions and | |||
| * limitations under the License. | |||
| */ | |||
| #include "backend/kernel_compiler/gpu/nn/adaptive_avg_pool2d_grad_gpu_kernel.h" | |||
| namespace mindspore { | |||
| namespace kernel { | |||
| MS_REG_GPU_KERNEL_ONE( | |||
| AdaptiveAvgPool2DGrad, | |||
| KernelAttr().AddInputAttr(kNumberTypeFloat16).AddInputAttr(kNumberTypeFloat16).AddOutputAttr(kNumberTypeFloat16), | |||
| AdaptiveAvgPool2DGradKernel, half) | |||
| MS_REG_GPU_KERNEL_ONE( | |||
| AdaptiveAvgPool2DGrad, | |||
| KernelAttr().AddInputAttr(kNumberTypeFloat32).AddInputAttr(kNumberTypeFloat32).AddOutputAttr(kNumberTypeFloat32), | |||
| AdaptiveAvgPool2DGradKernel, float) | |||
| MS_REG_GPU_KERNEL_ONE( | |||
| AdaptiveAvgPool2DGrad, | |||
| KernelAttr().AddInputAttr(kNumberTypeFloat64).AddInputAttr(kNumberTypeFloat64).AddOutputAttr(kNumberTypeFloat64), | |||
| AdaptiveAvgPool2DGradKernel, double) | |||
| } // namespace kernel | |||
| } // namespace mindspore | |||
| @@ -0,0 +1,120 @@ | |||
| /** | |||
| * Copyright 2021 Huawei Technologies Co., Ltd | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| * You may obtain a copy of the License at | |||
| * | |||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||
| * | |||
| * Unless required by applicable law or agreed to in writing, software | |||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| * See the License for the specific language governing permissions and | |||
| * limitations under the License. | |||
| */ | |||
| #ifndef MINDSPORE_CCSRC_BACKEND_KERNEL_COMPILER_GPU_NN_ADAPTIVEAVGPOOL2D_GPU_KERNEL_H_ | |||
| #define MINDSPORE_CCSRC_BACKEND_KERNEL_COMPILER_GPU_NN_ADAPTIVEAVGPOOL2D_GPU_KERNEL_H_ | |||
| #include <vector> | |||
| #include <string> | |||
| #include <algorithm> | |||
| #include "backend/kernel_compiler/gpu/gpu_kernel.h" | |||
| #include "backend/kernel_compiler/gpu/gpu_kernel_factory.h" | |||
| #include "backend/kernel_compiler/gpu/cuda_impl/adaptive_avg_pool2d_grad_impl.cuh" | |||
| namespace mindspore { | |||
| namespace kernel { | |||
| constexpr size_t kAdaptiveAvgPool2dGradInputNum = 2; | |||
| constexpr size_t kAdaptiveAvgPool2dGradMinRank = 2; | |||
| template <typename T> | |||
| class AdaptiveAvgPool2DGradKernel : public GpuKernel { | |||
| public: | |||
| AdaptiveAvgPool2DGradKernel() | |||
| : input_size_(0), | |||
| output_size_(0), | |||
| input_height_(0), | |||
| input_width_(0), | |||
| output_height_(0), | |||
| output_width_(0), | |||
| size_(0) {} | |||
| ~AdaptiveAvgPool2DGradKernel() override = default; | |||
| const std::vector<size_t> &GetInputSizeList() const override { return input_size_list_; } | |||
| const std::vector<size_t> &GetOutputSizeList() const override { return output_size_list_; } | |||
| const std::vector<size_t> &GetWorkspaceSizeList() const override { return workspace_size_list_; } | |||
| bool Launch(const std::vector<AddressPtr> &inputs, const std::vector<AddressPtr> &, | |||
| const std::vector<AddressPtr> &outputs, void *stream_ptr) override { | |||
| T *dy_addr = GetDeviceAddress<T>(inputs, 1); | |||
| T *dx_addr = GetDeviceAddress<T>(outputs, 0); | |||
| ApplyAdaptiveAvgPool2DGrad(size_, input_height_, input_width_, output_height_, output_width_, dy_addr, dx_addr, | |||
| reinterpret_cast<cudaStream_t>(stream_ptr)); | |||
| return true; | |||
| } | |||
| bool Init(const CNodePtr &kernel_node) override { | |||
| size_t input_num = AnfAlgo::GetInputTensorNum(kernel_node); | |||
| if (input_num != kAdaptiveAvgPool2dGradInputNum) { | |||
| MS_LOG(ERROR) << "Input number is " << input_num << ", but AdaptiveAvgPool2DGrad needs " | |||
| << kAdaptiveAvgPool2dGradInputNum << " inputs."; | |||
| return false; | |||
| } | |||
| input_size_ = sizeof(T); | |||
| output_size_ = sizeof(T); | |||
| auto input_shape = AnfAlgo::GetPrevNodeOutputInferShape(kernel_node, 1); // dy | |||
| auto output_shape = AnfAlgo::GetOutputInferShape(kernel_node, 0); // dx | |||
| auto input_rank = input_shape.size(); | |||
| auto output_rank = output_shape.size(); | |||
| if (input_rank < kAdaptiveAvgPool2dGradMinRank || output_rank < kAdaptiveAvgPool2dGradMinRank) { | |||
| MS_LOG(ERROR) << "The input or output should have rank at least 2."; | |||
| return false; | |||
| } | |||
| input_height_ = static_cast<uint>(input_shape[input_rank - 2]); | |||
| input_width_ = static_cast<uint>(input_shape[input_rank - 1]); | |||
| size_ = static_cast<uint>(input_rank == (kAdaptiveAvgPool2dGradMinRank + 1) ? input_shape[0] | |||
| : input_shape[0] * input_shape[1]); | |||
| for (uint i = 0; i < input_rank; i++) { | |||
| input_size_ *= input_shape[i]; | |||
| } | |||
| output_height_ = static_cast<uint>(output_shape[output_rank - 2]); | |||
| output_width_ = static_cast<uint>(output_shape[output_rank - 1]); | |||
| for (size_t i = 0; i < output_shape.size(); i++) { | |||
| output_size_ *= output_shape[i]; | |||
| } | |||
| InitSizeLists(); | |||
| return true; | |||
| } | |||
| protected: | |||
| void InitSizeLists() override { | |||
| input_size_list_.push_back(input_size_); | |||
| output_size_list_.push_back(output_size_); | |||
| } | |||
| private: | |||
| size_t input_size_; | |||
| size_t output_size_; | |||
| uint input_height_; | |||
| uint input_width_; | |||
| uint output_height_; | |||
| uint output_width_; | |||
| uint size_; | |||
| std::vector<size_t> input_size_list_; | |||
| std::vector<size_t> output_size_list_; | |||
| std::vector<size_t> workspace_size_list_; | |||
| }; | |||
| } // namespace kernel | |||
| } // namespace mindspore | |||
| #endif // MINDSPORE_CCSRC_BACKEND_KERNEL_COMPILER_GPU_NN_ADAPTIVEAVGPOOL2D_GPU_KERNEL_H_ | |||
| @@ -318,6 +318,17 @@ def get_bprop_avg_pool_grad(self): | |||
| return bprop | |||
| @bprop_getters.register(P.AdaptiveAvgPool2D) | |||
| def get_bprop_adaptive_avg_pool2d_grad(self): | |||
| """Grad definition for `AdaptiveAvgPool2D` operation.""" | |||
| adaptive_avgpool_grad = G.AdaptiveAvgPool2DGrad() | |||
| def bprop(x, out, dout): | |||
| dx = adaptive_avgpool_grad(x, dout) | |||
| return (dx,) | |||
| return bprop | |||
| @bprop_getters.register(P.AvgPool3D) | |||
| def get_bprop_avg_pool_3d_grad(self): | |||
| """Grad definition for `AvgPool3D` operation.""" | |||
| @@ -16,4 +16,4 @@ bprop.32:x* | |||
| bprop.32:y* | |||
| bprop.32:out* | |||
| bprop.32:dout2 | |||
| bprop.32:[CNode]35:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.32:[CNode]35:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -9,4 +9,4 @@ s | |||
| bprop.13:x* | |||
| bprop.13:out* | |||
| bprop.13:dout2 | |||
| bprop.13:[CNode]15:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.13:[CNode]15:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -9,4 +9,4 @@ s | |||
| bprop.16:x* | |||
| bprop.16:out* | |||
| bprop.16:dout2 | |||
| bprop.16:[CNode]18:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.16:[CNode]18:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -16,4 +16,4 @@ bprop.21:x* | |||
| bprop.21:y* | |||
| bprop.21:out* | |||
| bprop.21:dout2 | |||
| bprop.21:[CNode]24:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.21:[CNode]24:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -16,4 +16,4 @@ bprop.25:x* | |||
| bprop.25:y* | |||
| bprop.25:out* | |||
| bprop.25:dout2 | |||
| bprop.25:[CNode]28:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.25:[CNode]28:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -12,4 +12,4 @@ bprop.60:x* | |||
| bprop.60:y* | |||
| bprop.60:out* | |||
| bprop.60:dout2 | |||
| bprop.60:[CNode]62:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.60:[CNode]62:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -9,4 +9,4 @@ s | |||
| bprop.67:x* | |||
| bprop.67:out* | |||
| bprop.67:dout2 | |||
| bprop.67:[CNode]69:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.67:[CNode]69:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -6,4 +6,4 @@ l | |||
| bprop.19:x* | |||
| bprop.19:out* | |||
| bprop.19:dout2 | |||
| bprop.19:[CNode]20:1:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.19:[CNode]20:1:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -17,4 +17,4 @@ | |||
| bprop.110:keep_prob* | |||
| bprop.110:out* | |||
| bprop.110:dout2 | |||
| bprop.110:[CNode]114:4:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.110:[CNode]114:4:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -12,4 +12,4 @@ | |||
| bprop.50:keep_prob* | |||
| bprop.50:out* | |||
| bprop.50:dout2 | |||
| bprop.50:[CNode]53:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.50:[CNode]53:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -16,4 +16,4 @@ bprop.70:x* | |||
| bprop.70:y* | |||
| bprop.70:out* | |||
| bprop.70:dout2 | |||
| bprop.70:[CNode]73:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.70:[CNode]73:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -16,4 +16,4 @@ bprop.82:x* | |||
| bprop.82:y* | |||
| bprop.82:out* | |||
| bprop.82:dout2 | |||
| bprop.82:[CNode]85:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.82:[CNode]85:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -16,4 +16,4 @@ bprop.78:x* | |||
| bprop.78:y* | |||
| bprop.78:out* | |||
| bprop.78:dout2 | |||
| bprop.78:[CNode]81:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.78:[CNode]81:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -16,4 +16,4 @@ bprop.63:x* | |||
| bprop.63:y* | |||
| bprop.63:out* | |||
| bprop.63:dout2 | |||
| bprop.63:[CNode]66:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.63:[CNode]66:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -5,4 +5,4 @@ f | |||
| bprop.2:x* | |||
| bprop.2:out* | |||
| bprop.2:dout2 | |||
| bprop.2:[CNode]3:1:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.2:[CNode]3:1:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -9,4 +9,4 @@ s | |||
| bprop.29:x* | |||
| bprop.29:out* | |||
| bprop.29:dout2 | |||
| bprop.29:[CNode]31:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.29:[CNode]31:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -16,4 +16,4 @@ bprop.90:x* | |||
| bprop.90:y* | |||
| bprop.90:out* | |||
| bprop.90:dout2 | |||
| bprop.90:[CNode]93:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.90:[CNode]93:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -16,4 +16,4 @@ bprop.86:x* | |||
| bprop.86:y* | |||
| bprop.86:out* | |||
| bprop.86:dout2 | |||
| bprop.86:[CNode]89:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.86:[CNode]89:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -15,4 +15,4 @@ | |||
| bprop.45:num* | |||
| bprop.45:out* | |||
| bprop.45:dout2 | |||
| bprop.45:[CNode]49:4:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.45:[CNode]49:4:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -16,4 +16,4 @@ bprop.94:x* | |||
| bprop.94:y* | |||
| bprop.94:out* | |||
| bprop.94:dout2 | |||
| bprop.94:[CNode]97:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.94:[CNode]97:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -9,4 +9,4 @@ s | |||
| bprop.39:x* | |||
| bprop.39:out* | |||
| bprop.39:dout2 | |||
| bprop.39:[CNode]41:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.39:[CNode]41:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -16,4 +16,4 @@ bprop.98:x* | |||
| bprop.98:y* | |||
| bprop.98:out* | |||
| bprop.98:dout2 | |||
| bprop.98:[CNode]101:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.98:[CNode]101:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -16,4 +16,4 @@ bprop.74:x* | |||
| bprop.74:y* | |||
| bprop.74:out* | |||
| bprop.74:dout2 | |||
| bprop.74:[CNode]77:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.74:[CNode]77:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -19,4 +19,4 @@ | |||
| bprop.54:off_value* | |||
| bprop.54:out* | |||
| bprop.54:dout2 | |||
| bprop.54:[CNode]59:5:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.54:[CNode]59:5:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -7,4 +7,4 @@ l | |||
| bprop.7:x* | |||
| bprop.7:out* | |||
| bprop.7:dout2 | |||
| bprop.7:[CNode]9:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.7:[CNode]9:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -7,4 +7,4 @@ l | |||
| bprop.4:x* | |||
| bprop.4:out* | |||
| bprop.4:dout2 | |||
| bprop.4:[CNode]6:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.4:[CNode]6:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -8,4 +8,4 @@ f | |||
| bprop.0:x* | |||
| bprop.0:out* | |||
| bprop.0:dout2 | |||
| bprop.0:[CNode]1:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.0:[CNode]1:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -12,4 +12,4 @@ | |||
| bprop.102:axis* | |||
| bprop.102:out* | |||
| bprop.102:dout2 | |||
| bprop.102:[CNode]105:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.102:[CNode]105:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -12,4 +12,4 @@ | |||
| bprop.106:axis* | |||
| bprop.106:out* | |||
| bprop.106:dout2 | |||
| bprop.106:[CNode]109:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.106:[CNode]109:3:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -9,4 +9,4 @@ s | |||
| bprop.42:x* | |||
| bprop.42:out* | |||
| bprop.42:dout2 | |||
| bprop.42:[CNode]44:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.42:[CNode]44:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -9,4 +9,4 @@ s | |||
| bprop.36:x* | |||
| bprop.36:out* | |||
| bprop.36:dout2 | |||
| bprop.36:[CNode]38:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.36:[CNode]38:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -9,4 +9,4 @@ r | |||
| bprop.10:x* | |||
| bprop.10:out* | |||
| bprop.10:dout2 | |||
| bprop.10:[CNode]12:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b224c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71be985a048b98205beb531a0e96f3c9c3c36cb9a5fef472e532f1e8041d85d279c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| bprop.10:[CNode]12:2:€087787fe3abde92d74a97b5b9f48f23d8ccdd6de450a931c64f578b83dcb5c2f1bb10d35eb13b30786fa05cc950c1d1711dbc21a5dda0cf3c1670158c0627efe2366f7bd59ea5ec135e982de03b4f7cab6b61d833d046a6e13f78bdaf2fb2b22470a581257d7d4d477704a012a34929cbbd312ac64848b9e2b80836454492b454c332efad4a51b4773cb78093dd53a4ca850b2dc6cdd5f2ae47106b3fda77bb3565f906930f68ca2413e9ad958d105e129e717cd183b95d11d65a8b0b030fc0d7e635a08323207b4cb3f73fd8437b4d7ee28a7676a68f005a7749bd19e5ed4eca6c407ad6a3b57190d3702d6a45031d13b97bb6952735edf94fb36f73dbff6cdab258748286fc6d783abacce203dfc79d2fc31e23a427ce1f86e08777a687f71c414b8c313aac4f85c6217fbbb7009dd079b2d5548f8b695a470a11cb8cc83e6f5e78f5b3c67f2e7bf339b250c3638aee952e1a073002e2834011401f3827260ffb378d62977d2a1338d9b64be24b7349347c19c65faf6ba72837f4df97ff84c | |||
| @@ -843,6 +843,20 @@ class AvgPoolGrad(_PoolGrad): | |||
| return x1_dtype | |||
| class AdaptiveAvgPool2DGrad(PrimitiveWithInfer): | |||
| """Gradients of the adaptive avg pool 2D operation.""" | |||
| @prim_attr_register | |||
| def __init__(self): | |||
| """Initialize AdaptiveAvgPool2DGrad""" | |||
| def infer_shape(self, x1_shape, grad_shape): | |||
| return x1_shape | |||
| def infer_dtype(self, x1_dtype, grad_dtype): | |||
| return x1_dtype | |||
| class AvgPool3DGrad(Primitive): | |||
| """Gradients of the avg pool3d operation.""" | |||
| @@ -21,6 +21,7 @@ import mindspore.context as context | |||
| import mindspore.nn as nn | |||
| from mindspore import Tensor, ops | |||
| from mindspore.ops import operations as P | |||
| from mindspore.ops.operations import _grad_ops as G | |||
| from mindspore.common.api import ms_function | |||
| context.set_context(mode=context.PYNATIVE_MODE, device_target='GPU') | |||
| @@ -36,6 +37,16 @@ class Net(nn.Cell): | |||
| return self.adaptive_avg_pool2d(x) | |||
| class GradNet(nn.Cell): | |||
| def __init__(self): | |||
| super(GradNet, self).__init__() | |||
| self.adaptive_avg_pool2d_grad = G.AdaptiveAvgPool2DGrad() | |||
| @ms_function | |||
| def construct(self, x, dy): | |||
| return self.adaptive_avg_pool2d_grad(x, dy) | |||
| @pytest.mark.level0 | |||
| @pytest.mark.platform_x86_gpu_training | |||
| @pytest.mark.env_onecard | |||
| @@ -85,20 +96,80 @@ def test_net_value(): | |||
| assert output.asnumpy().shape == expect_shape | |||
| assert (output.asnumpy() == expect_output).all | |||
| expect_dx = np.array([[[0.75, 1.75, 1.0], | |||
| [2.25, 5.0, 2.75], | |||
| [1.5, 3.25, 1.75]], | |||
| [[0.75, 1.75, 1.0], | |||
| [2.25, 5.0, 2.75], | |||
| [1.5, 3.25, 1.75]], | |||
| [[0.75, 1.75, 1.0], | |||
| [2.25, 5.0, 2.75], | |||
| [1.5, 3.25, 1.75]]]) | |||
| grad_net = GradNet() | |||
| dx = grad_net(Tensor(x), output) | |||
| assert dx.asnumpy().shape == x.shape | |||
| assert (dx.asnumpy() == expect_dx).all | |||
| @pytest.mark.level0 | |||
| @pytest.mark.platform_x86_gpu_training | |||
| @pytest.mark.env_onecard | |||
| def test_net_pynative(): | |||
| def test_net_graph_mode(): | |||
| context.set_context(mode=context.GRAPH_MODE, device_target="GPU") | |||
| x = np.array([[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]], | |||
| [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]], | |||
| [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]]]) | |||
| adaptive_avg_pool_2d = ops.AdaptiveAvgPool2D((2, 2)) | |||
| output = adaptive_avg_pool_2d(Tensor(x)) | |||
| output = adaptive_avg_pool_2d(Tensor(x, mindspore.float16)) | |||
| expect_shape = (3, 2, 2) | |||
| expect_output = np.array([[[3.0, 4.0], [6.0, 7.0]], | |||
| [[3.0, 4.0], [6.0, 7.0]], | |||
| [[3.0, 4.0], [6.0, 7.0]]]) | |||
| assert output.asnumpy().shape == expect_shape | |||
| assert (output.asnumpy() == expect_output).all | |||
| expect_dx = np.array([[[0.75, 1.75, 1.0], | |||
| [2.25, 5.0, 2.75], | |||
| [1.5, 3.25, 1.75]], | |||
| [[0.75, 1.75, 1.0], | |||
| [2.25, 5.0, 2.75], | |||
| [1.5, 3.25, 1.75]], | |||
| [[0.75, 1.75, 1.0], | |||
| [2.25, 5.0, 2.75], | |||
| [1.5, 3.25, 1.75]]]) | |||
| grad_net = GradNet() | |||
| dx = grad_net(Tensor(x, mindspore.float16), output) | |||
| assert dx.asnumpy().shape == x.shape | |||
| assert (dx.asnumpy() == expect_dx).all | |||
| @pytest.mark.level0 | |||
| @pytest.mark.platform_x86_gpu_training | |||
| @pytest.mark.env_onecard | |||
| def test_net_graph_mode_fp64(): | |||
| context.set_context(mode=context.GRAPH_MODE, device_target="GPU") | |||
| x = np.array([[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]], | |||
| [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]], | |||
| [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]]]) | |||
| adaptive_avg_pool_2d = ops.AdaptiveAvgPool2D((2, 2)) | |||
| output = adaptive_avg_pool_2d(Tensor(x, mindspore.float64)) | |||
| expect_shape = (3, 2, 2) | |||
| expect_output = np.array([[[3.0, 4.0], [6.0, 7.0]], | |||
| [[3.0, 4.0], [6.0, 7.0]], | |||
| [[3.0, 4.0], [6.0, 7.0]]]) | |||
| assert output.asnumpy().shape == expect_shape | |||
| assert (output.asnumpy() == expect_output).all | |||
| expect_dx = np.array([[[0.75, 1.75, 1.0], | |||
| [2.25, 5.0, 2.75], | |||
| [1.5, 3.25, 1.75]], | |||
| [[0.75, 1.75, 1.0], | |||
| [2.25, 5.0, 2.75], | |||
| [1.5, 3.25, 1.75]], | |||
| [[0.75, 1.75, 1.0], | |||
| [2.25, 5.0, 2.75], | |||
| [1.5, 3.25, 1.75]]]) | |||
| grad_net = GradNet() | |||
| dx = grad_net(Tensor(x, mindspore.float64), output) | |||
| assert dx.asnumpy().shape == x.shape | |||
| assert (dx.asnumpy() == expect_dx).all | |||