code: def test_convtranspose3d(getkey):
      # Positional arguments
      conv = eqx.nn.ConvTranspose3d(1, 3, 3, key=getkey())
      x = jrandom.normal(getkey(), (1, 3, 32, 32))
      assert conv(x).shape == (3, 5, 34, 34)
  
      # Test stride and dilation
      conv = eqx.nn.ConvTranspose3d(
          in_channels=3,
          out_channels=1,
          kernel_size=(3, 3, 3),
          stride=2,
          padding=1,
          output_padding=1,
          dilation=2,
          use_bias=False,
          key=getkey(),
      )
      x = jrandom.normal(getkey(), (3, 2, 31, 31))
      assert conv(x).shape == (1, 6, 64, 64)
  
      # Test value matches
      conv = eqx.nn.ConvTranspose3d(
          1, 1, kernel_size=(2, 2, 2), padding=(0, 0, 0), key=getkey()
      )
      new_weight = jnp.arange(8).reshape(1, 1, 2, 2, 2)
      new_bias = jnp.array([1]).reshape(1, 1, 1, 1)
      data = jnp.arange(-4, 4).reshape(1, 2, 2, 2)
      assert new_weight.shape == conv.weight.shape
      assert new_bias.shape == conv.bias.shape  # pyright: ignore
      conv = eqx.tree_at(
          lambda x: (x.weight, x.bias), conv, (new_weight, new_bias)
      )
      answer = jnp.array(
          [
              -27,
              -44,
              -17,
              -33,
              -49,
              -17,
              -9,
              -12,
              -3,
              -11,
              -9,
              1,
              5,
              29,
              21,
              9,
              23,
              13,
              1,
              4,
              3,
              7,
              15,
              7,
              3,
              4,
              1,
          ]
      ).reshape(1, 3, 3, 3)
      assert jnp.all(conv(data) == answer)
  
imports: import warnings
  from typing import Union
  import equinox
  import jax
  import jax.nn
  import jax.numpy
  import jax.random
  import pytest
label_desc: Use image node_id 19 for calling a global function with example usage: test_convtranspose3d(getkey) without return types