---
title: "convolution2DWeightsGradient(_:source:outputShape:forwardConvolutionDescriptor:name:)"
framework: metalperformanceshadersgraph
role: symbol
role_heading: Instance Method
path: "metalperformanceshadersgraph/mpsgraph/convolution2dweightsgradient(_:source:outputshape:forwardconvolutiondescriptor:name:)"
---

# convolution2DWeightsGradient(_:source:outputShape:forwardConvolutionDescriptor:name:)

Creates a 2D convolution gradient operation with respect to the weights tensor of the forward convolution.

## Declaration

```swift
func convolution2DWeightsGradient(_ incomingGradient: MPSGraphTensor, source: MPSGraphTensor, outputShape: [NSNumber], forwardConvolutionDescriptor: MPSGraphConvolution2DOpDescriptor, name: String?) -> MPSGraphTensor
```

## Parameters

- `incomingGradient`: Incoming loss gradient tensor
- `outputShape`: Shape of the forward pass source tensor
- `forwardConvolutionDescriptor`: Forward convolution 2D op descriptor
- `name`: The name for the operation.

## Return Value

Return Value A valid MPSGraphTensor object

## Discussion

Discussion If W is weights tensor to forward convolution, R is the result/returned tensor of forward convolution, and L is the loss function, convolution2DWeightsGradientWithIncomingGradientTensor returns tensor dL/dW = dL/dR * dR/dW, where dL/dR is the incomingGradient parameter.
