summaryrefslogtreecommitdiff
path: root/text_recognizer/networks/conformer
diff options
context:
space:
mode:
authorGustaf Rydholm <gustaf.rydholm@gmail.com>2022-06-01 23:11:05 +0200
committerGustaf Rydholm <gustaf.rydholm@gmail.com>2022-06-01 23:11:05 +0200
commit729867b14754bffd98a3406b5d3a2eb9d09bc3bc (patch)
treed22fbe9a9aacd2b7e457f8af4b667c5c8d927d73 /text_recognizer/networks/conformer
parentdb86cef2d308f58325278061c6aa177a535e7e03 (diff)
WIP conformer
Diffstat (limited to 'text_recognizer/networks/conformer')
-rw-r--r--text_recognizer/networks/conformer/block.py (renamed from text_recognizer/networks/conformer/attention.py)0
-rw-r--r--text_recognizer/networks/conformer/depth_wise_conv.py12
-rw-r--r--text_recognizer/networks/conformer/glu.py12
-rw-r--r--text_recognizer/networks/conformer/mlp.py0
-rw-r--r--text_recognizer/networks/conformer/scale.py13
5 files changed, 37 insertions, 0 deletions
diff --git a/text_recognizer/networks/conformer/attention.py b/text_recognizer/networks/conformer/block.py
index e69de29..e69de29 100644
--- a/text_recognizer/networks/conformer/attention.py
+++ b/text_recognizer/networks/conformer/block.py
diff --git a/text_recognizer/networks/conformer/depth_wise_conv.py b/text_recognizer/networks/conformer/depth_wise_conv.py
new file mode 100644
index 0000000..9465b7c
--- /dev/null
+++ b/text_recognizer/networks/conformer/depth_wise_conv.py
@@ -0,0 +1,12 @@
+"""Depthwise 1D convolution."""
+from torch import nn, Tensor
+
+
+class DepthwiseConv1D(nn.Module):
+ def __init__(self, in_channels: int, out_channels: int, kernel_size: int) -> None:
+ super().__init__()
+ self.conv = nn.Conv1d(in_channels=in_channels, out_channels=out_channels, kernel_size=kernel_size, groups=in_channels,
+ padding="same")
+
+ def forward(self, x: Tensor) -> Tensor:
+ return self.conv(x)
diff --git a/text_recognizer/networks/conformer/glu.py b/text_recognizer/networks/conformer/glu.py
new file mode 100644
index 0000000..016b684
--- /dev/null
+++ b/text_recognizer/networks/conformer/glu.py
@@ -0,0 +1,12 @@
+"""GLU layer."""
+from torch import nn, Tensor
+
+
+class GLU(nn.Module):
+ def __init__(self, dim: int) -> None:
+ super().__init__()
+ self.dim = dim
+
+ def forward(self, x: Tensor) -> Tensor:
+ out, gate = x.chunk(2, dim=self.dim)
+ return out * gate.sigmoid()
diff --git a/text_recognizer/networks/conformer/mlp.py b/text_recognizer/networks/conformer/mlp.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/text_recognizer/networks/conformer/mlp.py
diff --git a/text_recognizer/networks/conformer/scale.py b/text_recognizer/networks/conformer/scale.py
new file mode 100644
index 0000000..da736a3
--- /dev/null
+++ b/text_recognizer/networks/conformer/scale.py
@@ -0,0 +1,13 @@
+"""Scale layer."""
+from typing import Dict
+from torch import nn, Tensor
+
+
+class Scale(nn.Module):
+ def __init__(self, scale: float, fn: nn.Module) -> None:
+ super().__init__()
+ self.scale = scale
+ self.fn = fn
+
+ def forward(self, x: Tensor, kwargs: Dict) -> Tensor:
+ return self.fn(x, **kwargs) * self.scale