From 2594f59d0d20460a3ddd9aa3737e725f8ac3ed8a Mon Sep 17 00:00:00 2001 From: Francesco Gatti Date: Wed, 30 Oct 2019 16:45:46 +0100 Subject: [PATCH] conv2d ok, but deconv ha different dim with tensorrt --- include/tkDNN/Layer.h | 2 +- include/tkDNN/NetworkRT.h | 1 - src/Conv2d.cpp | 12 ++++++------ tests/simple/test_simple.cpp | 2 ++ 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/include/tkDNN/Layer.h b/include/tkDNN/Layer.h index 6015235..31dc4d2 100644 --- a/include/tkDNN/Layer.h +++ b/include/tkDNN/Layer.h @@ -166,7 +166,7 @@ public: protected: cudnnFilterDescriptor_t filterDesc; cudnnConvolutionDescriptor_t convDesc; - cudnnConvolutionFwdAlgo_t fwAlgo; + cudnnConvolutionFwdAlgo_t algo; cudnnConvolutionBwdDataAlgo_t bwAlgo; cudnnTensorDescriptor_t biasTensorDesc; diff --git a/include/tkDNN/NetworkRT.h b/include/tkDNN/NetworkRT.h index 97dd478..d30da03 100644 --- a/include/tkDNN/NetworkRT.h +++ b/include/tkDNN/NetworkRT.h @@ -75,7 +75,6 @@ public: nvinfer1::ILayer* convert_layer(nvinfer1::ITensor *input, Layer *l); nvinfer1::ILayer* convert_layer(nvinfer1::ITensor *input, Conv2d *l); - nvinfer1::ILayer* convert_layer(nvinfer1::ITensor *input, DeConv2d *l); nvinfer1::ILayer* convert_layer(nvinfer1::ITensor *input, Activation *l); nvinfer1::ILayer* convert_layer(nvinfer1::ITensor *input, Dense *l); nvinfer1::ILayer* convert_layer(nvinfer1::ITensor *input, Pooling *l); diff --git a/src/Conv2d.cpp b/src/Conv2d.cpp index da1a4a2..cc4fbd5 100644 --- a/src/Conv2d.cpp +++ b/src/Conv2d.cpp @@ -73,10 +73,10 @@ void Conv2d::initCUDNN(bool back) { } else { checkCUDNN( cudnnGetConvolutionForwardAlgorithm(net->cudnnHandle, srcTensor, filterDesc, convDesc, dstTensor, - CUDNN_CONVOLUTION_FWD_PREFER_FASTEST, 0, &fwAlgo) ); + CUDNN_CONVOLUTION_FWD_PREFER_FASTEST, 0, &algo) ); checkCUDNN(cudnnGetConvolutionForwardWorkspaceSize(net->cudnnHandle, srcTensor, filterDesc, convDesc, dstTensor, - fwAlgo, &ws_sizeInBytes)); + algo, &ws_sizeInBytes)); } } @@ -93,14 +93,14 @@ void Conv2d::inferCUDNN(dnnType* srcData, bool back) { } else { checkCUDNN(cudnnConvolutionForward(net->cudnnHandle, &alpha, srcTensorDesc, srcData, filterDesc, - data_d, convDesc, fwAlgo, workSpace, ws_sizeInBytes, + data_d, convDesc, algo, workSpace, ws_sizeInBytes, &beta, dstTensorDesc, dstData)); } if(!batchnorm) { // bias alpha = dnnType(1); - beta = dnnType(0); + beta = dnnType(1); checkCUDNN( cudnnAddTensor(net->cudnnHandle, &alpha, biasTensorDesc, bias_d, &beta, dstTensorDesc, dstData) ); @@ -116,7 +116,7 @@ void Conv2d::inferCUDNN(dnnType* srcData, bool back) { } } -Conv2d::Conv2d( Network *net, int out_ch, int kernelH, int kernelW, +Conv2d::Conv2d( Network *net, int out_ch, int kernelH, int kernelW, int strideH, int strideW, int paddingH, int paddingW, std::string fname_weights, bool batchnorm, bool deConv) : @@ -156,7 +156,7 @@ Conv2d::Conv2d( Network *net, int out_ch, int kernelH, int kernelW, } Conv2d::~Conv2d() { - + checkCUDNN( cudnnDestroyFilterDescriptor(filterDesc) ); checkCUDNN( cudnnDestroyConvolutionDescriptor(convDesc) ); checkCUDNN( cudnnDestroyTensorDescriptor(biasTensorDesc) ); diff --git a/tests/simple/test_simple.cpp b/tests/simple/test_simple.cpp index d331b96..5634e4a 100644 --- a/tests/simple/test_simple.cpp +++ b/tests/simple/test_simple.cpp @@ -19,6 +19,8 @@ int main() { tk::dnn::Dense l5(&net, 4, d2_bin); tk::dnn::Activation l6(&net, CUDNN_ACTIVATION_RELU); + net.print(); + // Load input dnnType *data; dnnType *input_h;