Skip to main content
Log in

Python module

conv

The conv module provides classes for performing convolution operations in various dimensions (1D, 2D, and 3D) on tensor inputs. These convolution operations are core building blocks for neural networks, especially in computer vision and sequence processing tasks.

Here’s an example demonstrating how to use a 1D convolution:

import max.nn as nn
from max.graph import Graph, ops, Weight
from max.dtype import DType
import numpy as np

with Graph(name="conv_example") as graph:
# Define dimensions
batch_size = 2
seq_length = 10
in_channels = 16
out_channels = 32
kernel_size = 3

# Create input tensor [batch_size, sequence_length, channels]
x_data = np.zeros((batch_size, seq_length, in_channels), dtype=np.float32)
x = ops.constant(x_data, dtype=DType.float32)

# Create weights for convolution
filter_1d = Weight(
name="filter_weight",
dtype=DType.float32,
shape=[kernel_size, in_channels, out_channels]
)
bias_1d = Weight(
name="bias_weight",
dtype=DType.float32,
shape=[out_channels]
)

# Create and apply Conv1D layer
conv1d = nn.Conv1D(
filter=filter_1d,
bias=bias_1d,
stride=1,
padding=1
)

output_1d = conv1d(x)
print(f"Conv1D output shape: {output_1d.shape}")
# Output: Conv1D output shape: [Dim(2), Dim(10), Dim(32)]
import max.nn as nn
from max.graph import Graph, ops, Weight
from max.dtype import DType
import numpy as np

with Graph(name="conv_example") as graph:
# Define dimensions
batch_size = 2
seq_length = 10
in_channels = 16
out_channels = 32
kernel_size = 3

# Create input tensor [batch_size, sequence_length, channels]
x_data = np.zeros((batch_size, seq_length, in_channels), dtype=np.float32)
x = ops.constant(x_data, dtype=DType.float32)

# Create weights for convolution
filter_1d = Weight(
name="filter_weight",
dtype=DType.float32,
shape=[kernel_size, in_channels, out_channels]
)
bias_1d = Weight(
name="bias_weight",
dtype=DType.float32,
shape=[out_channels]
)

# Create and apply Conv1D layer
conv1d = nn.Conv1D(
filter=filter_1d,
bias=bias_1d,
stride=1,
padding=1
)

output_1d = conv1d(x)
print(f"Conv1D output shape: {output_1d.shape}")
# Output: Conv1D output shape: [Dim(2), Dim(10), Dim(32)]

Conv1D

class max.nn.conv.Conv1D(filter: Value | BufferValue | TensorValue | Shape | Dim | int | float | integer | floating | ndarray, bias: Value | BufferValue | TensorValue | Shape | Dim | int | float | integer | floating | ndarray | None = None, stride: int = 1, padding: int = 0, dilation: int = 1, groups: int = 1)

A 1D convolution over an input signal composed of several input planes.

Example

conv = nn.Conv1D(
filter=filter_1d,
bias=bias_1d,
stride=1,
padding=1
)
conv = nn.Conv1D(
filter=filter_1d,
bias=bias_1d,
stride=1,
padding=1
)

bias

bias*: Value | BufferValue | TensorValue | Shape | Dim | int | float | integer | floating | ndarray | None* = None

dilation

dilation*: int* = 1

filter

filter*: Value | BufferValue | TensorValue | Shape | Dim | int | float | integer | floating | ndarray*

groups

groups*: int* = 1

padding

padding*: int* = 0

stride

stride*: int* = 1

Conv2D

class max.nn.conv.Conv2D(filter: Value | BufferValue | TensorValue | Shape | Dim | int | float | integer | floating | ndarray, bias: Value | BufferValue | TensorValue | Shape | Dim | int | float | integer | floating | ndarray | None = None, stride: int | Tuple[int, int] = (1, 1), padding: int | Tuple[int, int, int, int] = (0, 0, 0, 0), dilation: int | Tuple[int, int] = (1, 1), groups: int = 1)

A 2D convolution over an input signal composed of several input planes.

Example

conv = nn.Conv2D(
filter=filter_2d,
bias=bias_2d,
stride=2,
padding=1
)
output = conv(x)
conv = nn.Conv2D(
filter=filter_2d,
bias=bias_2d,
stride=2,
padding=1
)
output = conv(x)

bias

bias*: Value | BufferValue | TensorValue | Shape | Dim | int | float | integer | floating | ndarray | None* = None

dilation

dilation*: int | Tuple[int, int]* = (1, 1)

filter

filter*: Value | BufferValue | TensorValue | Shape | Dim | int | float | integer | floating | ndarray*

groups

groups*: int* = 1

padding

padding*: int | Tuple[int, int, int, int]* = (0, 0, 0, 0)

stride

stride*: int | Tuple[int, int]* = (1, 1)

Conv3D

class max.nn.conv.Conv3D(filter: Value | BufferValue | TensorValue | Shape | Dim | int | float | integer | floating | ndarray, bias: Value | BufferValue | TensorValue | Shape | Dim | int | float | integer | floating | ndarray | None = None, stride: int | Tuple[int, int, int] = (1, 1, 1), padding: int | Tuple[int, int, int, int, int, int] = (0, 0, 0, 0, 0, 0), dilation: int | Tuple[int, int, int] = (1, 1, 1), groups: int = 1)

A 3D convolution over an input signal composed of several input planes.

Example

conv = nn.Conv3D(
filter=filter_3d,
bias=bias_3d,
stride=1,
padding=1
)
conv = nn.Conv3D(
filter=filter_3d,
bias=bias_3d,
stride=1,
padding=1
)

bias

bias*: Value | BufferValue | TensorValue | Shape | Dim | int | float | integer | floating | ndarray | None* = None

dilation

dilation*: int | Tuple[int, int, int]* = (1, 1, 1)

filter

filter*: Value | BufferValue | TensorValue | Shape | Dim | int | float | integer | floating | ndarray*

groups

groups*: int* = 1

padding

padding*: int | Tuple[int, int, int, int, int, int]* = (0, 0, 0, 0, 0, 0)

stride

stride*: int | Tuple[int, int, int]* = (1, 1, 1)