extern crate alloc;
use burn::prelude::*;
use burn::nn::LayerNorm;
use burn::nn::LayerNormConfig;
use burn::nn::Linear;
use burn::nn::LinearConfig;
use burn::nn::PaddingConfig1d;
use burn::nn::PaddingConfig2d;
use burn::nn::conv::Conv1d;
use burn::nn::conv::Conv1dConfig;
use burn::nn::conv::Conv2d;
use burn::nn::conv::Conv2dConfig;
#[derive(Module, Debug)]
pub struct Submodule1 {
conv2d1: Conv2d,
constant675: burn::module::Param<Tensor<1, Int>>,
conv2d2: Conv2d,
conv2d3: Conv2d,
conv2d4: Conv2d,
conv2d5: Conv2d,
linear1: Linear,
#[module(skip)]
device: Device,
}
impl Submodule1 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let conv2d1 = Conv2dConfig::new([1, 256], [3, 3])
.with_stride([2, 2])
.with_padding(PaddingConfig2d::Explicit(2, 2, 1, 1))
.with_dilation([1, 1])
.with_groups(1)
.with_bias(true)
.init(device);
let constant675: burn::module::Param<Tensor<1, Int>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
1,
Int,
>::from_data(
burn::tensor::TensorData::from([3i64]),
(device, burn::tensor::DType::I64),
),
device.clone(),
false,
[1].into(),
);
let conv2d2 = Conv2dConfig::new([256, 256], [3, 3])
.with_stride([2, 2])
.with_padding(PaddingConfig2d::Explicit(2, 2, 1, 1))
.with_dilation([1, 1])
.with_groups(256)
.with_bias(true)
.init(device);
let conv2d3 = Conv2dConfig::new([256, 256], [1, 1])
.with_stride([1, 1])
.with_padding(PaddingConfig2d::Valid)
.with_dilation([1, 1])
.with_groups(1)
.with_bias(true)
.init(device);
let conv2d4 = Conv2dConfig::new([256, 256], [3, 3])
.with_stride([2, 2])
.with_padding(PaddingConfig2d::Explicit(2, 2, 1, 1))
.with_dilation([1, 1])
.with_groups(256)
.with_bias(true)
.init(device);
let conv2d5 = Conv2dConfig::new([256, 256], [1, 1])
.with_stride([1, 1])
.with_padding(PaddingConfig2d::Valid)
.with_dilation([1, 1])
.with_groups(1)
.with_bias(true)
.init(device);
let linear1 = LinearConfig::new(4352, 1024).with_bias(true).init(device);
Self {
conv2d1,
constant675,
conv2d2,
conv2d3,
conv2d4,
conv2d5,
linear1,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
processed_signal: Tensor<3>,
cache_last_channel: Tensor<4>,
cache_last_time: Tensor<4>,
processed_signal_length: Tensor<1, Int>,
) -> (Tensor<1, Int>, i64, i64, [i64; 1], bool, Tensor<4>, Tensor<4>, Tensor<3>) {
let shape1_out1: [i64; 1] = {
let axes = &processed_signal.clone().dims()[2..3];
let mut output = [0i64; 1];
for i in 0..1 {
output[i] = axes[i] as i64;
}
output
};
let squeeze1_out1 = shape1_out1[0] as i64;
let transpose1_out1 = cache_last_channel.permute([1, 0, 2, 3]);
let constant670_out1 = 2i64;
let div1_out1 = squeeze1_out1 / constant670_out1;
let constant426_out1 = 1i64;
let add1_out1 = constant426_out1 + div1_out1;
let div2_out1 = add1_out1 / constant670_out1;
let add2_out1 = constant426_out1 + div2_out1;
let div3_out1 = add2_out1 / constant670_out1;
let add3_out1 = constant426_out1 + div3_out1;
let constant707_out1 = -1i64;
let mul1_out1 = constant670_out1 * constant707_out1;
let mul2_out1 = add3_out1 * constant707_out1;
let max1_out1 = mul1_out1.max(mul2_out1);
let mul3_out1 = max1_out1 * constant707_out1;
let constant671_out1 = -1i64;
let mul4_out1 = constant671_out1 * mul3_out1;
let add4_out1 = constant426_out1 + mul4_out1;
let add5_out1 = add4_out1 + div3_out1;
let constant425_out1 = 0i64;
let max2_out1 = constant425_out1.max(add5_out1);
let mul5_out1 = constant670_out1 * max2_out1;
let constant673_out1 = 139i64;
let add6_out1 = constant673_out1 + mul5_out1;
let transpose2_out1 = cache_last_time.permute([1, 0, 2, 3]);
let transpose3_out1 = processed_signal.permute([0, 2, 1]);
let unsqueeze1_out1: Tensor<4> = transpose3_out1.unsqueeze_dims::<4>(&[1]);
let range1_out1 = {
let start = 0i64;
let delta = 1i64;
assert!(delta != 0);
let n = (((squeeze1_out1 as i128 - start as i128) as f64) / delta as f64)
.ceil()
.max(0.0) as i64;
Tensor::arange(0..n, &self.device)
.cast(burn::tensor::DType::I64)
.mul_scalar(delta)
.add_scalar(start)
};
let constant431_out1: [i64; 1] = [1i64];
let concat1_out1: [i64; 2usize] = [&constant431_out1[..], &shape1_out1[..]]
.concat()
.try_into()
.unwrap();
let expand1_out1 = {
let onnx_shape: [i64; 2usize] = concat1_out1;
let input_dims = range1_out1.dims();
let mut shape = onnx_shape;
#[allow(clippy::needless_range_loop)]
for i in 0..1usize {
let dim_offset = 1usize + i;
if shape[dim_offset] == 1 && input_dims[i] > 1 {
shape[dim_offset] = input_dims[i] as i64;
}
}
range1_out1.expand(shape)
};
let unsqueeze2_out1: Tensor<2, Int> = processed_signal_length
.clone()
.unsqueeze_dims::<2>(&[1]);
let less1_out1 = expand1_out1.lower(unsqueeze2_out1);
let unsqueeze3_out1: Tensor<3, Bool> = less1_out1.unsqueeze_dims::<3>(&[-1]);
let constant674_out1: [i64; 1] = [128i64];
let concat2_out1: [i64; 3usize] = [
&constant431_out1[..],
&shape1_out1[..],
&constant674_out1[..],
]
.concat()
.try_into()
.unwrap();
let expand2_out1 = {
let onnx_shape: [i64; 3usize] = concat2_out1;
let input_dims = unsqueeze3_out1.dims();
let mut shape = onnx_shape;
#[allow(clippy::needless_range_loop)]
for i in 0..3usize {
let dim_offset = i;
if shape[dim_offset] == 1 && input_dims[i] > 1 {
shape[dim_offset] = input_dims[i] as i64;
}
}
unsqueeze3_out1.expand(shape)
};
let cast1_out1 = expand2_out1.float().cast(burn::tensor::DType::F32);
let unsqueeze4_out1: Tensor<4> = cast1_out1.unsqueeze_dims::<4>(&[1]);
let mul6_out1 = unsqueeze1_out1.mul(unsqueeze4_out1);
let conv2d1_out1 = self.conv2d1.forward(mul6_out1);
let add7_out1 = processed_signal_length.add_scalar(constant670_out1);
let add8_out1 = add7_out1.add_scalar(constant426_out1);
let constant675_out1 = self.constant675.val();
let sub1_out1 = add8_out1.sub(constant675_out1.clone());
let less2_out1 = sub1_out1.clone().lower_elem(constant425_out1);
let constant427_out1 = true;
let equal1_out1 = less2_out1.equal_elem(constant427_out1);
let mod1_out1 = sub1_out1.clone().remainder_scalar(constant670_out1);
let cast2_out1 = mod1_out1.bool();
let and1_out1 = equal1_out1.bool_and(cast2_out1);
let cast3_out1 = and1_out1.int().cast(burn::tensor::DType::I64);
let div4_out1 = sub1_out1.div_scalar(constant670_out1);
let sub2_out1 = div4_out1.sub(cast3_out1);
let add9_out1 = sub2_out1.add_scalar(constant426_out1);
let range2_out1 = {
let start = 0i64;
let delta = 1i64;
assert!(delta != 0);
let n = (((add1_out1 as i128 - start as i128) as f64) / delta as f64)
.ceil()
.max(0.0) as i64;
Tensor::arange(0..n, &self.device)
.cast(burn::tensor::DType::I64)
.mul_scalar(delta)
.add_scalar(start)
};
let unsqueeze5_out1 = [add1_out1 as i64];
let concat3_out1: [i64; 2usize] = [&constant431_out1[..], &unsqueeze5_out1[..]]
.concat()
.try_into()
.unwrap();
let expand3_out1 = {
let onnx_shape: [i64; 2usize] = concat3_out1;
let input_dims = range2_out1.dims();
let mut shape = onnx_shape;
#[allow(clippy::needless_range_loop)]
for i in 0..1usize {
let dim_offset = 1usize + i;
if shape[dim_offset] == 1 && input_dims[i] > 1 {
shape[dim_offset] = input_dims[i] as i64;
}
}
range2_out1.expand(shape)
};
let unsqueeze6_out1: Tensor<2, Int> = add9_out1
.clone()
.unsqueeze_dims::<2>(&[1]);
let less3_out1 = expand3_out1.lower(unsqueeze6_out1);
let unsqueeze7_out1: Tensor<3, Bool> = less3_out1.unsqueeze_dims::<3>(&[-1]);
let constant676_out1: [i64; 1] = [65i64];
let concat4_out1: [i64; 3usize] = [
&constant431_out1[..],
&unsqueeze5_out1[..],
&constant676_out1[..],
]
.concat()
.try_into()
.unwrap();
let expand4_out1 = {
let onnx_shape: [i64; 3usize] = concat4_out1;
let input_dims = unsqueeze7_out1.dims();
let mut shape = onnx_shape;
#[allow(clippy::needless_range_loop)]
for i in 0..3usize {
let dim_offset = i;
if shape[dim_offset] == 1 && input_dims[i] > 1 {
shape[dim_offset] = input_dims[i] as i64;
}
}
unsqueeze7_out1.expand(shape)
};
let cast4_out1 = expand4_out1.float().cast(burn::tensor::DType::F32);
let unsqueeze8_out1: Tensor<4> = cast4_out1.unsqueeze_dims::<4>(&[1]);
let constant677_out1: [i64; 1] = [256i64];
let concat5_out1: [i64; 4usize] = [
&constant431_out1[..],
&constant677_out1[..],
&unsqueeze5_out1[..],
&constant676_out1[..],
]
.concat()
.try_into()
.unwrap();
let expand5_out1 = {
let onnx_shape: [i64; 4usize] = concat5_out1;
let input_dims = unsqueeze8_out1.dims();
let mut shape = onnx_shape;
#[allow(clippy::needless_range_loop)]
for i in 0..4usize {
let dim_offset = i;
if shape[dim_offset] == 1 && input_dims[i] > 1 {
shape[dim_offset] = input_dims[i] as i64;
}
}
unsqueeze8_out1.expand(shape)
};
let mul7_out1 = conv2d1_out1.mul(expand5_out1.clone());
let relu1_out1 = burn::tensor::activation::relu(mul7_out1);
let mul8_out1 = relu1_out1.mul(expand5_out1);
let conv2d2_out1 = self.conv2d2.forward(mul8_out1);
let add10_out1 = add9_out1.add_scalar(constant670_out1);
let add11_out1 = add10_out1.add_scalar(constant426_out1);
let sub3_out1 = add11_out1.sub(constant675_out1.clone());
let less4_out1 = sub3_out1.clone().lower_elem(constant425_out1);
let equal2_out1 = less4_out1.equal_elem(constant427_out1);
let mod2_out1 = sub3_out1.clone().remainder_scalar(constant670_out1);
let cast5_out1 = mod2_out1.bool();
let and2_out1 = equal2_out1.bool_and(cast5_out1);
let cast6_out1 = and2_out1.int().cast(burn::tensor::DType::I64);
let div5_out1 = sub3_out1.div_scalar(constant670_out1);
let sub4_out1 = div5_out1.sub(cast6_out1);
let add12_out1 = sub4_out1.add_scalar(constant426_out1);
let range3_out1 = {
let start = 0i64;
let delta = 1i64;
assert!(delta != 0);
let n = (((add2_out1 as i128 - start as i128) as f64) / delta as f64)
.ceil()
.max(0.0) as i64;
Tensor::arange(0..n, &self.device)
.cast(burn::tensor::DType::I64)
.mul_scalar(delta)
.add_scalar(start)
};
let unsqueeze9_out1 = [add2_out1 as i64];
let concat6_out1: [i64; 2usize] = [&constant431_out1[..], &unsqueeze9_out1[..]]
.concat()
.try_into()
.unwrap();
let expand6_out1 = {
let onnx_shape: [i64; 2usize] = concat6_out1;
let input_dims = range3_out1.dims();
let mut shape = onnx_shape;
#[allow(clippy::needless_range_loop)]
for i in 0..1usize {
let dim_offset = 1usize + i;
if shape[dim_offset] == 1 && input_dims[i] > 1 {
shape[dim_offset] = input_dims[i] as i64;
}
}
range3_out1.expand(shape)
};
let unsqueeze10_out1: Tensor<2, Int> = add12_out1
.clone()
.unsqueeze_dims::<2>(&[1]);
let less5_out1 = expand6_out1.lower(unsqueeze10_out1);
let unsqueeze11_out1: Tensor<3, Bool> = less5_out1.unsqueeze_dims::<3>(&[-1]);
let constant678_out1: [i64; 1] = [33i64];
let concat7_out1: [i64; 3usize] = [
&constant431_out1[..],
&unsqueeze9_out1[..],
&constant678_out1[..],
]
.concat()
.try_into()
.unwrap();
let expand7_out1 = {
let onnx_shape: [i64; 3usize] = concat7_out1;
let input_dims = unsqueeze11_out1.dims();
let mut shape = onnx_shape;
#[allow(clippy::needless_range_loop)]
for i in 0..3usize {
let dim_offset = i;
if shape[dim_offset] == 1 && input_dims[i] > 1 {
shape[dim_offset] = input_dims[i] as i64;
}
}
unsqueeze11_out1.expand(shape)
};
let cast7_out1 = expand7_out1.float().cast(burn::tensor::DType::F32);
let unsqueeze12_out1: Tensor<4> = cast7_out1.unsqueeze_dims::<4>(&[1]);
let concat8_out1: [i64; 4usize] = [
&constant431_out1[..],
&constant677_out1[..],
&unsqueeze9_out1[..],
&constant678_out1[..],
]
.concat()
.try_into()
.unwrap();
let expand8_out1 = {
let onnx_shape: [i64; 4usize] = concat8_out1;
let input_dims = unsqueeze12_out1.dims();
let mut shape = onnx_shape;
#[allow(clippy::needless_range_loop)]
for i in 0..4usize {
let dim_offset = i;
if shape[dim_offset] == 1 && input_dims[i] > 1 {
shape[dim_offset] = input_dims[i] as i64;
}
}
unsqueeze12_out1.expand(shape)
};
let mul9_out1 = conv2d2_out1.mul(expand8_out1.clone());
let conv2d3_out1 = self.conv2d3.forward(mul9_out1);
let mul10_out1 = conv2d3_out1.mul(expand8_out1.clone());
let relu2_out1 = burn::tensor::activation::relu(mul10_out1);
let mul11_out1 = relu2_out1.mul(expand8_out1);
let conv2d4_out1 = self.conv2d4.forward(mul11_out1);
let add13_out1 = add12_out1.add_scalar(constant670_out1);
let add14_out1 = add13_out1.add_scalar(constant426_out1);
let sub5_out1 = add14_out1.sub(constant675_out1);
let less6_out1 = sub5_out1.clone().lower_elem(constant425_out1);
let equal3_out1 = less6_out1.equal_elem(constant427_out1);
let mod3_out1 = sub5_out1.clone().remainder_scalar(constant670_out1);
let cast8_out1 = mod3_out1.bool();
let and3_out1 = equal3_out1.bool_and(cast8_out1);
let cast9_out1 = and3_out1.int().cast(burn::tensor::DType::I64);
let div6_out1 = sub5_out1.div_scalar(constant670_out1);
let sub6_out1 = div6_out1.sub(cast9_out1);
let add15_out1 = sub6_out1.add_scalar(constant426_out1);
let range4_out1 = {
let start = 0i64;
let delta = 1i64;
assert!(delta != 0);
let n = (((add3_out1 as i128 - start as i128) as f64) / delta as f64)
.ceil()
.max(0.0) as i64;
Tensor::arange(0..n, &self.device)
.cast(burn::tensor::DType::I64)
.mul_scalar(delta)
.add_scalar(start)
};
let unsqueeze13_out1 = [add3_out1 as i64];
let concat9_out1: [i64; 2usize] = [&constant431_out1[..], &unsqueeze13_out1[..]]
.concat()
.try_into()
.unwrap();
let expand9_out1 = {
let onnx_shape: [i64; 2usize] = concat9_out1;
let input_dims = range4_out1.dims();
let mut shape = onnx_shape;
#[allow(clippy::needless_range_loop)]
for i in 0..1usize {
let dim_offset = 1usize + i;
if shape[dim_offset] == 1 && input_dims[i] > 1 {
shape[dim_offset] = input_dims[i] as i64;
}
}
range4_out1.expand(shape)
};
let unsqueeze14_out1: Tensor<2, Int> = add15_out1
.clone()
.unsqueeze_dims::<2>(&[1]);
let less7_out1 = expand9_out1.lower(unsqueeze14_out1);
let unsqueeze15_out1: Tensor<3, Bool> = less7_out1.unsqueeze_dims::<3>(&[-1]);
let constant679_out1: [i64; 1] = [17i64];
let concat10_out1: [i64; 3usize] = [
&constant431_out1[..],
&unsqueeze13_out1[..],
&constant679_out1[..],
]
.concat()
.try_into()
.unwrap();
let expand10_out1 = {
let onnx_shape: [i64; 3usize] = concat10_out1;
let input_dims = unsqueeze15_out1.dims();
let mut shape = onnx_shape;
#[allow(clippy::needless_range_loop)]
for i in 0..3usize {
let dim_offset = i;
if shape[dim_offset] == 1 && input_dims[i] > 1 {
shape[dim_offset] = input_dims[i] as i64;
}
}
unsqueeze15_out1.expand(shape)
};
let cast10_out1 = expand10_out1.float().cast(burn::tensor::DType::F32);
let unsqueeze16_out1: Tensor<4> = cast10_out1.unsqueeze_dims::<4>(&[1]);
let concat11_out1: [i64; 4usize] = [
&constant431_out1[..],
&constant677_out1[..],
&unsqueeze13_out1[..],
&constant679_out1[..],
]
.concat()
.try_into()
.unwrap();
let expand11_out1 = {
let onnx_shape: [i64; 4usize] = concat11_out1;
let input_dims = unsqueeze16_out1.dims();
let mut shape = onnx_shape;
#[allow(clippy::needless_range_loop)]
for i in 0..4usize {
let dim_offset = i;
if shape[dim_offset] == 1 && input_dims[i] > 1 {
shape[dim_offset] = input_dims[i] as i64;
}
}
unsqueeze16_out1.expand(shape)
};
let mul12_out1 = conv2d4_out1.mul(expand11_out1.clone());
let conv2d5_out1 = self.conv2d5.forward(mul12_out1);
let mul13_out1 = conv2d5_out1.mul(expand11_out1.clone());
let relu3_out1 = burn::tensor::activation::relu(mul13_out1);
let mul14_out1 = relu3_out1.mul(expand11_out1);
let transpose4_out1 = mul14_out1.permute([0, 2, 1, 3]);
let reshape1_out1 = transpose4_out1.reshape([1, -1, 4352]);
let linear1_out1 = self.linear1.forward(reshape1_out1);
let slice1_out1 = linear1_out1.slice(s![.., 2.., ..]);
let sub7_out1 = add15_out1.sub_scalar(constant670_out1);
(
sub7_out1,
max2_out1,
add6_out1,
constant431_out1,
constant427_out1,
transpose1_out1,
transpose2_out1,
slice1_out1,
)
}
}
#[derive(Module, Debug)]
pub struct Submodule2 {
constant711: burn::module::Param<Tensor<1, Int>>,
constant424: burn::module::Param<Tensor<3>>,
constant434: burn::module::Param<Tensor<1>>,
linear2: Linear,
linear3: Linear,
linear4: Linear,
linear5: Linear,
#[module(skip)]
device: Device,
}
impl Submodule2 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let constant711: burn::module::Param<Tensor<1, Int>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
1,
Int,
>::from_data(
burn::tensor::TensorData::from([-1i64]),
(device, burn::tensor::DType::I64),
),
device.clone(),
false,
[1].into(),
);
let constant424: burn::module::Param<Tensor<3>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
3,
>::zeros([1, 9999, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1, 9999, 1024].into(),
);
let constant434: burn::module::Param<Tensor<1>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
1,
>::from_data(
burn::tensor::TensorData::from([14f64]),
(device, burn::tensor::DType::F32),
),
device.clone(),
false,
[1].into(),
);
let linear2 = LinearConfig::new(1024, 1024).with_bias(true).init(device);
let linear3 = LinearConfig::new(1024, 1024).with_bias(true).init(device);
let linear4 = LinearConfig::new(1024, 1024).with_bias(true).init(device);
let linear5 = LinearConfig::new(1024, 1024).with_bias(true).init(device);
Self {
constant711,
constant424,
constant434,
linear2,
linear3,
linear4,
linear5,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
sub7_out1: Tensor<1, Int>,
max2_out1: i64,
cache_last_channel_len: Tensor<1, Int>,
add6_out1: i64,
constant431_out1: [i64; 1],
constant427_out1: bool,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
spk_targets: Tensor<2>,
slice1_out1: Tensor<3>,
bg_spk_targets: Tensor<2>,
) -> (
Tensor<3>,
Tensor<3>,
Tensor<3>,
[i64; 1],
Tensor<3, Bool>,
Tensor<2, Bool>,
Tensor<3>,
Tensor<1, Int>,
) {
let clip1_out1 = sub7_out1.clamp_min(0f64);
let constant665_out1 = 70i64;
let add16_out1 = max2_out1 + constant665_out1;
let add17_out1 = clip1_out1.clone().add_scalar(constant665_out1);
let constant711_out1 = self.constant711.val();
let mul15_out1 = cache_last_channel_len.mul(constant711_out1);
let add18_out1 = mul15_out1.add_scalar(constant665_out1);
let constant681_out1 = 5000i64;
let sub8_out1 = constant681_out1 - add16_out1;
let add19_out1 = sub8_out1 + add6_out1;
let unsqueeze17_out1 = [sub8_out1 as i64];
let unsqueeze18_out1 = [add19_out1 as i64];
let constant424_out1 = self.constant424.val();
let transpose5_out1 = constant424_out1.permute([1, 0, 2]);
let slice2_out1 = transpose5_out1
.slice(s![unsqueeze17_out1[0]..unsqueeze18_out1[0], .., ..]);
let transpose6_out1 = slice2_out1.permute([1, 0, 2]);
let unsqueeze19_out1 = [add16_out1 as i64];
let concat12_out1: [i64; 3usize] = [
&constant431_out1[..],
&unsqueeze19_out1[..],
&unsqueeze19_out1[..],
]
.concat()
.try_into()
.unwrap();
let expand12_out1 = {
let input = Tensor::<
1,
Bool,
>::from_data(
burn::tensor::TensorData::from([constant427_out1]),
(
&self.device,
burn::tensor::DType::Bool(burn::tensor::BoolStore::Native),
),
);
input.expand(concat12_out1)
};
let cast11_out1 = add16_out1;
let range5_out1 = {
let start = 0i32;
let delta = 1i32;
assert!(delta != 0);
let n = (((cast11_out1 as i128 - start as i128) as f64) / delta as f64)
.ceil()
.max(0.0) as i64;
Tensor::arange(0..n, &self.device)
.cast(burn::tensor::DType::I32)
.mul_scalar(delta)
.add_scalar(start)
};
let cast12_out1 = range5_out1.float().cast(burn::tensor::DType::F32);
let constant434_out1 = self.constant434.val();
let div7_out1 = cast12_out1.div(constant434_out1);
let abs1_out1 = div7_out1.clone().abs();
let floor1_out1 = abs1_out1.floor();
let sign1_out1 = div7_out1.sign();
let mul16_out1 = floor1_out1.mul(sign1_out1);
let cast13_out1 = mul16_out1.int().cast(burn::tensor::DType::I32);
let unsqueeze20_out1: Tensor<2, Int> = cast13_out1
.clone()
.unsqueeze_dims::<2>(&[1]);
let unsqueeze21_out1: Tensor<2, Int> = cast13_out1.unsqueeze_dims::<2>(&[0]);
let sub9_out1 = unsqueeze20_out1.sub(unsqueeze21_out1);
let constant435_out1 = 5i32;
let lessorequal1_out1 = sub9_out1.clone().lower_equal_elem(constant435_out1);
let constant432_out1 = 0i32;
let greaterorequal1_out1 = sub9_out1.greater_equal_elem(constant432_out1);
let and4_out1 = lessorequal1_out1.bool_and(greaterorequal1_out1);
let unsqueeze22_out1: Tensor<3, Bool> = and4_out1.unsqueeze_dims::<3>(&[0]);
let and5_out1 = expand12_out1.bool_and(unsqueeze22_out1);
let range6_out1 = {
let start = 0i64;
let delta = 1i64;
assert!(delta != 0);
let n = (((add16_out1 as i128 - start as i128) as f64) / delta as f64)
.ceil()
.max(0.0) as i64;
Tensor::arange(0..n, &self.device)
.cast(burn::tensor::DType::I64)
.mul_scalar(delta)
.add_scalar(start)
};
let expand13_out1 = {
let onnx_shape: [i64; 2usize] = [1, 1];
let input_dims = range6_out1.dims();
let mut shape = onnx_shape;
#[allow(clippy::needless_range_loop)]
for i in 0..1usize {
let dim_offset = 1usize + i;
if shape[dim_offset] == 1 && input_dims[i] > 1 {
shape[dim_offset] = input_dims[i] as i64;
}
}
range6_out1.expand(shape)
};
let unsqueeze23_out1: Tensor<2, Int> = add17_out1.unsqueeze_dims::<2>(&[-1]);
let less8_out1 = expand13_out1.clone().lower(unsqueeze23_out1);
let unsqueeze24_out1: Tensor<2, Int> = add18_out1.unsqueeze_dims::<2>(&[-1]);
let greaterorequal2_out1 = expand13_out1.greater_equal(unsqueeze24_out1);
let and6_out1 = greaterorequal2_out1.bool_and(less8_out1);
let unsqueeze25_out1: Tensor<3, Bool> = and6_out1
.clone()
.unsqueeze_dims::<3>(&[1]);
let expand14_out1 = {
let onnx_shape: [i64; 3usize] = [1, 1, 1];
let input_dims = unsqueeze25_out1.dims();
let mut shape = onnx_shape;
#[allow(clippy::needless_range_loop)]
for i in 0..3usize {
let dim_offset = i;
if shape[dim_offset] == 1 && input_dims[i] > 1 {
shape[dim_offset] = input_dims[i] as i64;
}
}
unsqueeze25_out1.expand(shape)
};
let concat13_out1: [i64; 3usize] = [
&constant431_out1[..],
&unsqueeze19_out1[..],
&constant431_out1[..],
]
.concat()
.try_into()
.unwrap();
let tile1_out1 = {
let repeats: alloc::vec::Vec<usize> = concat13_out1
.iter()
.map(|&v| v as usize)
.collect();
expand14_out1.repeat(&repeats)
};
let transpose7_out1 = tile1_out1.clone().permute([0, 2, 1]);
let and7_out1 = tile1_out1.bool_and(transpose7_out1);
let and8_out1 = and7_out1.bool_and(and5_out1);
let not1_out1 = and8_out1.bool_not();
let not2_out1 = and6_out1.bool_not();
let slice3_out1 = not2_out1.slice(s![.., 70..]);
let slice4_out1 = not1_out1.slice(s![.., 70.., ..]);
let gather1_out1 = {
let sliced = transpose1_out1.slice(s![0, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather2_out1 = {
let sliced = transpose2_out1.slice(s![0, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let constant716_out1 = -1i64;
let mul17_out1 = max2_out1 * constant716_out1;
let unsqueeze26_out1 = [mul17_out1 as i64];
let transpose8_out1 = spk_targets.permute([1, 0]);
let slice5_out1 = transpose8_out1
.slice(s![unsqueeze26_out1[0]..9223372036854775807, ..]);
let transpose9_out1 = slice5_out1.permute([1, 0]);
let unsqueeze27_out1: Tensor<3> = transpose9_out1.unsqueeze_dims::<3>(&[2]);
let mul18_out1 = slice1_out1.clone().mul(unsqueeze27_out1);
let linear2_out1 = self.linear2.forward(mul18_out1);
let relu4_out1 = burn::tensor::activation::relu(linear2_out1);
let linear3_out1 = self.linear3.forward(relu4_out1);
let add20_out1 = slice1_out1.add(linear3_out1);
let transpose10_out1 = bg_spk_targets.permute([1, 0]);
let slice6_out1 = transpose10_out1
.slice(s![unsqueeze26_out1[0]..9223372036854775807, ..]);
let transpose11_out1 = slice6_out1.permute([1, 0]);
let unsqueeze28_out1: Tensor<3> = transpose11_out1.unsqueeze_dims::<3>(&[2]);
let mul19_out1 = add20_out1.clone().mul(unsqueeze28_out1);
let linear4_out1 = self.linear4.forward(mul19_out1);
let relu5_out1 = burn::tensor::activation::relu(linear4_out1);
let linear5_out1 = self.linear5.forward(relu5_out1);
let add21_out1 = add20_out1.add(linear5_out1);
(
add21_out1,
gather1_out1,
transpose6_out1,
unsqueeze19_out1,
slice4_out1,
slice3_out1,
gather2_out1,
clip1_out1,
)
}
}
#[derive(Module, Debug)]
pub struct Submodule3 {
layernormalization1: LayerNorm,
linear6: Linear,
linear7: Linear,
constant684: burn::module::Param<Tensor<1>>,
layernormalization2: LayerNorm,
linear8: Linear,
linear9: Linear,
linear10: Linear,
linear11: Linear,
constant23: burn::module::Param<Tensor<2>>,
constant24: burn::module::Param<Tensor<2>>,
constant687: burn::module::Param<Tensor<1>>,
linear12: Linear,
layernormalization3: LayerNorm,
squeeze2: burn::module::Param<Tensor<2>>,
#[module(skip)]
device: Device,
}
impl Submodule3 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization1 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear6 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear7 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let constant684: burn::module::Param<Tensor<1>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
1,
>::from_data(
burn::tensor::TensorData::from([0.5f64]),
(device, burn::tensor::DType::F32),
),
device.clone(),
false,
[1].into(),
);
let layernormalization2 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear8 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear9 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear10 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear11 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant23: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant24: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant687: burn::module::Param<Tensor<1>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
1,
>::from_data(
burn::tensor::TensorData::from([0.0883883461356163f64]),
(device, burn::tensor::DType::F32),
),
device.clone(),
false,
[1].into(),
);
let linear12 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let layernormalization3 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze2: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
Self {
layernormalization1,
linear6,
linear7,
constant684,
layernormalization2,
linear8,
linear9,
linear10,
linear11,
constant23,
constant24,
constant687,
linear12,
layernormalization3,
squeeze2,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add21_out1: Tensor<3>,
gather1_out1: Tensor<3>,
max2_out1: i64,
transpose6_out1: Tensor<3>,
constant431_out1: [i64; 1],
add6_out1: i64,
unsqueeze19_out1: [i64; 1],
slice4_out1: Tensor<3, Bool>,
slice3_out1: Tensor<2, Bool>,
gather2_out1: Tensor<3>,
) -> (
Tensor<3>,
Tensor<3>,
Tensor<1>,
[i64; 1],
[i64; 4],
[i64; 4],
Tensor<1>,
Tensor<4, Bool>,
f32,
Tensor<4, Bool>,
f32,
Tensor<3, Bool>,
Tensor<3>,
) {
let layernormalization1_out1 = {
let dtype = add21_out1.clone().dtype();
self.layernormalization1
.forward(add21_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear6_out1 = self.linear6.forward(layernormalization1_out1);
let sigmoid1_out1 = burn::tensor::activation::sigmoid(linear6_out1.clone());
let mul20_out1 = linear6_out1.mul(sigmoid1_out1);
let linear7_out1 = self.linear7.forward(mul20_out1);
let constant684_out1 = self.constant684.val();
let mul21_out1 = linear7_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add22_out1 = add21_out1.add(mul21_out1);
let layernormalization2_out1 = {
let dtype = add22_out1.clone().dtype();
self.layernormalization2
.forward(add22_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat14_out1 = burn::tensor::Tensor::cat(
[gather1_out1.clone(), layernormalization2_out1.clone()].into(),
1,
);
let unsqueeze29_out1 = [max2_out1 as i64];
let transpose12_out1 = gather1_out1.permute([1, 0, 2]);
let slice7_out1 = transpose12_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose13_out1 = slice7_out1.permute([1, 0, 2]);
let concat15_out1 = burn::tensor::Tensor::cat(
[transpose13_out1, layernormalization2_out1.clone()].into(),
1,
);
let linear8_out1 = self.linear8.forward(layernormalization2_out1);
let reshape2_out1 = linear8_out1.reshape([1, -1, 8, 128]);
let linear9_out1 = self.linear9.forward(concat14_out1.clone());
let reshape3_out1 = linear9_out1.reshape([1, -1, 8, 128]);
let linear10_out1 = self.linear10.forward(concat14_out1);
let reshape4_out1 = linear10_out1.reshape([1, -1, 8, 128]);
let transpose14_out1 = reshape3_out1.permute([0, 2, 1, 3]);
let transpose15_out1 = reshape4_out1.permute([0, 2, 1, 3]);
let linear11_out1 = self.linear11.forward(transpose6_out1);
let reshape5_out1 = linear11_out1.reshape([1, -1, 8, 128]);
let constant23_out1 = self.constant23.val();
let add23_out1 = reshape2_out1
.clone()
.add((constant23_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose16_out1 = add23_out1.permute([0, 2, 1, 3]);
let constant24_out1 = self.constant24.val();
let add24_out1 = reshape2_out1
.add((constant24_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose17_out1 = add24_out1.permute([0, 2, 1, 3]);
let transpose18_out1 = reshape5_out1.permute([0, 2, 3, 1]);
let matmul12_out1 = transpose17_out1.matmul(transpose18_out1);
let pad1_out1 = matmul12_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let constant451_out1: [i64; 1] = [-1i64];
let constant686_out1: [i64; 1] = [8i64];
let concat16_out1: [i64; 4usize] = [
&constant431_out1[..],
&constant686_out1[..],
&constant451_out1[..],
&unsqueeze29_out1[..],
]
.concat()
.try_into()
.unwrap();
let reshape6_out1 = pad1_out1.reshape(concat16_out1);
let slice8_out1 = reshape6_out1.slice(s![.., .., 1.., ..]);
let unsqueeze30_out1 = [add6_out1 as i64];
let concat17_out1: [i64; 4usize] = [
&constant431_out1[..],
&constant686_out1[..],
&unsqueeze29_out1[..],
&unsqueeze30_out1[..],
]
.concat()
.try_into()
.unwrap();
let reshape7_out1 = slice8_out1.reshape(concat17_out1);
let transpose19_out1 = reshape7_out1.permute([3, 0, 1, 2]);
let slice9_out1 = transpose19_out1.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose20_out1 = slice9_out1.permute([1, 2, 3, 0]);
let constant687_out1 = self.constant687.val();
let mul22_out1 = transpose20_out1
.mul((constant687_out1.clone()).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let unsqueeze31_out1: Tensor<4, Bool> = slice4_out1.unsqueeze_dims::<4>(&[1]);
let constant450_out1 = -10000f32;
let where1_out1 = mul22_out1
.mask_fill(unsqueeze31_out1.clone(), constant450_out1);
let (attention1_out1,) = {
let q = transpose16_out1;
let k = transpose14_out1;
let v = transpose15_out1;
let score_bias = where1_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention1_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention1_out1 = {
let dims = attention1_out1.dims();
attention1_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention1_out1,)
};
let cast14_out1 = unsqueeze31_out1.clone().int().cast(burn::tensor::DType::I64);
let reducemin1_out1 = {
cast14_out1.min_dim(3usize).squeeze_dims::<3usize>(&[3])
};
let cast15_out1 = reducemin1_out1.bool();
let unsqueeze32_out1: Tensor<4, Bool> = cast15_out1.unsqueeze_dims::<4>(&[-1]);
let expand15_out1 = {
let onnx_shape: [i64; 4usize] = [1, 8, 1, 128];
let input_dims = unsqueeze32_out1.dims();
let mut shape = onnx_shape;
#[allow(clippy::needless_range_loop)]
for i in 0..4usize {
let dim_offset = i;
if shape[dim_offset] == 1 && input_dims[i] > 1 {
shape[dim_offset] = input_dims[i] as i64;
}
}
unsqueeze32_out1.expand(shape)
};
let constant453_out1 = 0f32;
let where2_out1 = attention1_out1
.mask_fill(expand15_out1.clone(), constant453_out1);
let transpose21_out1 = where2_out1.permute([0, 2, 1, 3]);
let reshape8_out1 = transpose21_out1.reshape([1, -1, 1024]);
let linear12_out1 = self.linear12.forward(reshape8_out1);
let add25_out1 = add22_out1.add(linear12_out1);
let layernormalization3_out1 = {
let dtype = add25_out1.clone().dtype();
self.layernormalization3
.forward(add25_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze2_out1 = self.squeeze2.val();
let transpose22_out1 = squeeze2_out1.permute([1, 0]);
let matmul14_out1 = layernormalization3_out1
.matmul(transpose22_out1.unsqueeze::<3usize>());
let split_tensors = matmul14_out1.split_with_sizes([1024, 1024].into(), 2);
let [split1_out1, split1_out2] = split_tensors.try_into().unwrap();
let sigmoid2_out1 = burn::tensor::activation::sigmoid(split1_out2);
let mul23_out1 = split1_out1.mul(sigmoid2_out1);
let transpose23_out1 = mul23_out1.permute([0, 2, 1]);
let unsqueeze33_out1: Tensor<3, Bool> = slice3_out1.unsqueeze_dims::<3>(&[1]);
let where3_out1 = transpose23_out1
.mask_fill(unsqueeze33_out1.clone(), constant453_out1);
let pad2_out1 = where3_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat18_out1 = burn::tensor::Tensor::cat(
[gather2_out1, pad2_out1].into(),
2,
);
(
concat18_out1,
add25_out1,
constant684_out1,
unsqueeze29_out1,
concat16_out1,
concat17_out1,
constant687_out1,
unsqueeze31_out1,
constant450_out1,
expand15_out1,
constant453_out1,
unsqueeze33_out1,
concat15_out1,
)
}
}
#[derive(Module, Debug)]
pub struct Submodule4 {
conv1d1: Conv1d,
layernormalization4: LayerNorm,
squeeze3: burn::module::Param<Tensor<2>>,
layernormalization5: LayerNorm,
linear13: Linear,
linear14: Linear,
layernormalization6: LayerNorm,
layernormalization7: LayerNorm,
linear15: Linear,
linear16: Linear,
layernormalization8: LayerNorm,
linear17: Linear,
linear18: Linear,
linear19: Linear,
linear20: Linear,
constant40: burn::module::Param<Tensor<2>>,
constant41: burn::module::Param<Tensor<2>>,
linear21: Linear,
#[module(skip)]
device: Device,
}
impl Submodule4 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let conv1d1 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization4 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze3: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization5 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear13 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear14 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization6 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization7 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear15 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear16 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization8 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear17 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear18 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear19 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear20 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant40: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant41: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear21 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
conv1d1,
layernormalization4,
squeeze3,
layernormalization5,
linear13,
linear14,
layernormalization6,
layernormalization7,
linear15,
linear16,
layernormalization8,
linear17,
linear18,
linear19,
linear20,
constant40,
constant41,
linear21,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
concat18_out1: Tensor<3>,
add25_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
constant453_out1: f32,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let slice10_out1 = concat18_out1.clone().slice(s![.., .., - 8..]);
let conv1d1_out1 = self.conv1d1.forward(concat18_out1);
let transpose24_out1 = conv1d1_out1.permute([0, 2, 1]);
let layernormalization4_out1 = {
let dtype = transpose24_out1.dtype();
self.layernormalization4
.forward(transpose24_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid3_out1 = burn::tensor::activation::sigmoid(
layernormalization4_out1.clone(),
);
let mul24_out1 = layernormalization4_out1.mul(sigmoid3_out1);
let squeeze3_out1 = self.squeeze3.val();
let transpose25_out1 = squeeze3_out1.permute([1, 0]);
let matmul15_out1 = mul24_out1.matmul(transpose25_out1.unsqueeze::<3usize>());
let add26_out1 = add25_out1.add(matmul15_out1);
let layernormalization5_out1 = {
let dtype = add26_out1.clone().dtype();
self.layernormalization5
.forward(add26_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear13_out1 = self.linear13.forward(layernormalization5_out1);
let sigmoid4_out1 = burn::tensor::activation::sigmoid(linear13_out1.clone());
let mul25_out1 = linear13_out1.mul(sigmoid4_out1);
let linear14_out1 = self.linear14.forward(mul25_out1);
let mul26_out1 = linear14_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add27_out1 = add26_out1.add(mul26_out1);
let layernormalization6_out1 = {
let dtype = add27_out1.dtype();
self.layernormalization6
.forward(add27_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather3_out1 = {
let sliced = transpose1_out1.slice(s![1, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather4_out1 = {
let sliced = transpose2_out1.slice(s![1, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization7_out1 = {
let dtype = layernormalization6_out1.clone().dtype();
self.layernormalization7
.forward(layernormalization6_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear15_out1 = self.linear15.forward(layernormalization7_out1);
let sigmoid5_out1 = burn::tensor::activation::sigmoid(linear15_out1.clone());
let mul27_out1 = linear15_out1.mul(sigmoid5_out1);
let linear16_out1 = self.linear16.forward(mul27_out1);
let mul28_out1 = linear16_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add28_out1 = layernormalization6_out1.add(mul28_out1);
let layernormalization8_out1 = {
let dtype = add28_out1.clone().dtype();
self.layernormalization8
.forward(add28_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat19_out1 = burn::tensor::Tensor::cat(
[gather3_out1.clone(), layernormalization8_out1.clone()].into(),
1,
);
let transpose26_out1 = gather3_out1.permute([1, 0, 2]);
let slice11_out1 = transpose26_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose27_out1 = slice11_out1.permute([1, 0, 2]);
let concat20_out1 = burn::tensor::Tensor::cat(
[transpose27_out1, layernormalization8_out1.clone()].into(),
1,
);
let linear17_out1 = self.linear17.forward(layernormalization8_out1);
let reshape9_out1 = linear17_out1.reshape([1, -1, 8, 128]);
let linear18_out1 = self.linear18.forward(concat19_out1.clone());
let reshape10_out1 = linear18_out1.reshape([1, -1, 8, 128]);
let linear19_out1 = self.linear19.forward(concat19_out1);
let reshape11_out1 = linear19_out1.reshape([1, -1, 8, 128]);
let transpose28_out1 = reshape10_out1.permute([0, 2, 1, 3]);
let transpose29_out1 = reshape11_out1.permute([0, 2, 1, 3]);
let linear20_out1 = self.linear20.forward(transpose6_out1);
let reshape12_out1 = linear20_out1.reshape([1, -1, 8, 128]);
let constant40_out1 = self.constant40.val();
let add29_out1 = reshape9_out1
.clone()
.add((constant40_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose30_out1 = add29_out1.permute([0, 2, 1, 3]);
let constant41_out1 = self.constant41.val();
let add30_out1 = reshape9_out1
.add((constant41_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose31_out1 = add30_out1.permute([0, 2, 1, 3]);
let transpose32_out1 = reshape12_out1.permute([0, 2, 3, 1]);
let matmul24_out1 = transpose31_out1.matmul(transpose32_out1);
let pad3_out1 = matmul24_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape13_out1 = pad3_out1.reshape(concat16_out1);
let slice12_out1 = reshape13_out1.slice(s![.., .., 1.., ..]);
let reshape14_out1 = slice12_out1.reshape(concat17_out1);
let transpose33_out1 = reshape14_out1.permute([3, 0, 1, 2]);
let slice13_out1 = transpose33_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose34_out1 = slice13_out1.permute([1, 2, 3, 0]);
let mul29_out1 = transpose34_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where4_out1 = mul29_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention2_out1,) = {
let q = transpose30_out1;
let k = transpose28_out1;
let v = transpose29_out1;
let score_bias = where4_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention2_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention2_out1 = {
let dims = attention2_out1.dims();
attention2_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention2_out1,)
};
let where5_out1 = attention2_out1.mask_fill(expand15_out1, constant453_out1);
let transpose35_out1 = where5_out1.permute([0, 2, 1, 3]);
let reshape15_out1 = transpose35_out1.reshape([1, -1, 1024]);
let linear21_out1 = self.linear21.forward(reshape15_out1);
let add31_out1 = add28_out1.add(linear21_out1);
(add31_out1, gather4_out1, concat20_out1, slice10_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule5 {
layernormalization9: LayerNorm,
squeeze4: burn::module::Param<Tensor<2>>,
conv1d2: Conv1d,
layernormalization10: LayerNorm,
squeeze5: burn::module::Param<Tensor<2>>,
layernormalization11: LayerNorm,
linear22: Linear,
linear23: Linear,
layernormalization12: LayerNorm,
layernormalization13: LayerNorm,
linear24: Linear,
linear25: Linear,
layernormalization14: LayerNorm,
linear26: Linear,
linear27: Linear,
linear28: Linear,
linear29: Linear,
constant57: burn::module::Param<Tensor<2>>,
constant58: burn::module::Param<Tensor<2>>,
linear30: Linear,
#[module(skip)]
device: Device,
}
impl Submodule5 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization9 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze4: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d2 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization10 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze5: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization11 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear22 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear23 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization12 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization13 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear24 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear25 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization14 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear26 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear27 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear28 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear29 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant57: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant58: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear30 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization9,
squeeze4,
conv1d2,
layernormalization10,
squeeze5,
layernormalization11,
linear22,
linear23,
layernormalization12,
layernormalization13,
linear24,
linear25,
layernormalization14,
linear26,
linear27,
linear28,
linear29,
constant57,
constant58,
linear30,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add31_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather4_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization9_out1 = {
let dtype = add31_out1.clone().dtype();
self.layernormalization9
.forward(add31_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze4_out1 = self.squeeze4.val();
let transpose36_out1 = squeeze4_out1.permute([1, 0]);
let matmul26_out1 = layernormalization9_out1
.matmul(transpose36_out1.unsqueeze::<3usize>());
let split_tensors = matmul26_out1.split_with_sizes([1024, 1024].into(), 2);
let [split2_out1, split2_out2] = split_tensors.try_into().unwrap();
let sigmoid6_out1 = burn::tensor::activation::sigmoid(split2_out2);
let mul30_out1 = split2_out1.mul(sigmoid6_out1);
let transpose37_out1 = mul30_out1.permute([0, 2, 1]);
let where6_out1 = transpose37_out1.mask_fill(unsqueeze33_out1, constant453_out1);
let pad4_out1 = where6_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat21_out1 = burn::tensor::Tensor::cat(
[gather4_out1, pad4_out1].into(),
2,
);
let slice14_out1 = concat21_out1.clone().slice(s![.., .., - 8..]);
let conv1d2_out1 = self.conv1d2.forward(concat21_out1);
let transpose38_out1 = conv1d2_out1.permute([0, 2, 1]);
let layernormalization10_out1 = {
let dtype = transpose38_out1.dtype();
self.layernormalization10
.forward(transpose38_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid7_out1 = burn::tensor::activation::sigmoid(
layernormalization10_out1.clone(),
);
let mul31_out1 = layernormalization10_out1.mul(sigmoid7_out1);
let squeeze5_out1 = self.squeeze5.val();
let transpose39_out1 = squeeze5_out1.permute([1, 0]);
let matmul27_out1 = mul31_out1.matmul(transpose39_out1.unsqueeze::<3usize>());
let add32_out1 = add31_out1.add(matmul27_out1);
let layernormalization11_out1 = {
let dtype = add32_out1.clone().dtype();
self.layernormalization11
.forward(add32_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear22_out1 = self.linear22.forward(layernormalization11_out1);
let sigmoid8_out1 = burn::tensor::activation::sigmoid(linear22_out1.clone());
let mul32_out1 = linear22_out1.mul(sigmoid8_out1);
let linear23_out1 = self.linear23.forward(mul32_out1);
let mul33_out1 = linear23_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add33_out1 = add32_out1.add(mul33_out1);
let layernormalization12_out1 = {
let dtype = add33_out1.dtype();
self.layernormalization12
.forward(add33_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather5_out1 = {
let sliced = transpose1_out1.slice(s![2, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather6_out1 = {
let sliced = transpose2_out1.slice(s![2, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization13_out1 = {
let dtype = layernormalization12_out1.clone().dtype();
self.layernormalization13
.forward(
layernormalization12_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear24_out1 = self.linear24.forward(layernormalization13_out1);
let sigmoid9_out1 = burn::tensor::activation::sigmoid(linear24_out1.clone());
let mul34_out1 = linear24_out1.mul(sigmoid9_out1);
let linear25_out1 = self.linear25.forward(mul34_out1);
let mul35_out1 = linear25_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add34_out1 = layernormalization12_out1.add(mul35_out1);
let layernormalization14_out1 = {
let dtype = add34_out1.clone().dtype();
self.layernormalization14
.forward(add34_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat22_out1 = burn::tensor::Tensor::cat(
[gather5_out1.clone(), layernormalization14_out1.clone()].into(),
1,
);
let transpose40_out1 = gather5_out1.permute([1, 0, 2]);
let slice15_out1 = transpose40_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose41_out1 = slice15_out1.permute([1, 0, 2]);
let concat23_out1 = burn::tensor::Tensor::cat(
[transpose41_out1, layernormalization14_out1.clone()].into(),
1,
);
let linear26_out1 = self.linear26.forward(layernormalization14_out1);
let reshape16_out1 = linear26_out1.reshape([1, -1, 8, 128]);
let linear27_out1 = self.linear27.forward(concat22_out1.clone());
let reshape17_out1 = linear27_out1.reshape([1, -1, 8, 128]);
let linear28_out1 = self.linear28.forward(concat22_out1);
let reshape18_out1 = linear28_out1.reshape([1, -1, 8, 128]);
let transpose42_out1 = reshape17_out1.permute([0, 2, 1, 3]);
let transpose43_out1 = reshape18_out1.permute([0, 2, 1, 3]);
let linear29_out1 = self.linear29.forward(transpose6_out1);
let reshape19_out1 = linear29_out1.reshape([1, -1, 8, 128]);
let constant57_out1 = self.constant57.val();
let add35_out1 = reshape16_out1
.clone()
.add((constant57_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose44_out1 = add35_out1.permute([0, 2, 1, 3]);
let constant58_out1 = self.constant58.val();
let add36_out1 = reshape16_out1
.add((constant58_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose45_out1 = add36_out1.permute([0, 2, 1, 3]);
let transpose46_out1 = reshape19_out1.permute([0, 2, 3, 1]);
let matmul36_out1 = transpose45_out1.matmul(transpose46_out1);
let pad5_out1 = matmul36_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape20_out1 = pad5_out1.reshape(concat16_out1);
let slice16_out1 = reshape20_out1.slice(s![.., .., 1.., ..]);
let reshape21_out1 = slice16_out1.reshape(concat17_out1);
let transpose47_out1 = reshape21_out1.permute([3, 0, 1, 2]);
let slice17_out1 = transpose47_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose48_out1 = slice17_out1.permute([1, 2, 3, 0]);
let mul36_out1 = transpose48_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where7_out1 = mul36_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention3_out1,) = {
let q = transpose44_out1;
let k = transpose42_out1;
let v = transpose43_out1;
let score_bias = where7_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention3_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention3_out1 = {
let dims = attention3_out1.dims();
attention3_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention3_out1,)
};
let where8_out1 = attention3_out1.mask_fill(expand15_out1, constant453_out1);
let transpose49_out1 = where8_out1.permute([0, 2, 1, 3]);
let reshape22_out1 = transpose49_out1.reshape([1, -1, 1024]);
let linear30_out1 = self.linear30.forward(reshape22_out1);
let add37_out1 = add34_out1.add(linear30_out1);
(add37_out1, gather6_out1, concat23_out1, slice14_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule6 {
layernormalization15: LayerNorm,
squeeze6: burn::module::Param<Tensor<2>>,
conv1d3: Conv1d,
layernormalization16: LayerNorm,
squeeze7: burn::module::Param<Tensor<2>>,
layernormalization17: LayerNorm,
linear31: Linear,
linear32: Linear,
layernormalization18: LayerNorm,
layernormalization19: LayerNorm,
linear33: Linear,
linear34: Linear,
layernormalization20: LayerNorm,
linear35: Linear,
linear36: Linear,
linear37: Linear,
linear38: Linear,
constant74: burn::module::Param<Tensor<2>>,
constant75: burn::module::Param<Tensor<2>>,
linear39: Linear,
#[module(skip)]
device: Device,
}
impl Submodule6 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization15 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze6: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d3 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization16 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze7: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization17 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear31 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear32 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization18 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization19 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear33 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear34 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization20 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear35 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear36 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear37 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear38 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant74: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant75: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear39 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization15,
squeeze6,
conv1d3,
layernormalization16,
squeeze7,
layernormalization17,
linear31,
linear32,
layernormalization18,
layernormalization19,
linear33,
linear34,
layernormalization20,
linear35,
linear36,
linear37,
linear38,
constant74,
constant75,
linear39,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add37_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather6_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization15_out1 = {
let dtype = add37_out1.clone().dtype();
self.layernormalization15
.forward(add37_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze6_out1 = self.squeeze6.val();
let transpose50_out1 = squeeze6_out1.permute([1, 0]);
let matmul38_out1 = layernormalization15_out1
.matmul(transpose50_out1.unsqueeze::<3usize>());
let split_tensors = matmul38_out1.split_with_sizes([1024, 1024].into(), 2);
let [split3_out1, split3_out2] = split_tensors.try_into().unwrap();
let sigmoid10_out1 = burn::tensor::activation::sigmoid(split3_out2);
let mul37_out1 = split3_out1.mul(sigmoid10_out1);
let transpose51_out1 = mul37_out1.permute([0, 2, 1]);
let where9_out1 = transpose51_out1.mask_fill(unsqueeze33_out1, constant453_out1);
let pad6_out1 = where9_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat24_out1 = burn::tensor::Tensor::cat(
[gather6_out1, pad6_out1].into(),
2,
);
let slice18_out1 = concat24_out1.clone().slice(s![.., .., - 8..]);
let conv1d3_out1 = self.conv1d3.forward(concat24_out1);
let transpose52_out1 = conv1d3_out1.permute([0, 2, 1]);
let layernormalization16_out1 = {
let dtype = transpose52_out1.dtype();
self.layernormalization16
.forward(transpose52_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid11_out1 = burn::tensor::activation::sigmoid(
layernormalization16_out1.clone(),
);
let mul38_out1 = layernormalization16_out1.mul(sigmoid11_out1);
let squeeze7_out1 = self.squeeze7.val();
let transpose53_out1 = squeeze7_out1.permute([1, 0]);
let matmul39_out1 = mul38_out1.matmul(transpose53_out1.unsqueeze::<3usize>());
let add38_out1 = add37_out1.add(matmul39_out1);
let layernormalization17_out1 = {
let dtype = add38_out1.clone().dtype();
self.layernormalization17
.forward(add38_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear31_out1 = self.linear31.forward(layernormalization17_out1);
let sigmoid12_out1 = burn::tensor::activation::sigmoid(linear31_out1.clone());
let mul39_out1 = linear31_out1.mul(sigmoid12_out1);
let linear32_out1 = self.linear32.forward(mul39_out1);
let mul40_out1 = linear32_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add39_out1 = add38_out1.add(mul40_out1);
let layernormalization18_out1 = {
let dtype = add39_out1.dtype();
self.layernormalization18
.forward(add39_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather7_out1 = {
let sliced = transpose1_out1.slice(s![3, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather8_out1 = {
let sliced = transpose2_out1.slice(s![3, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization19_out1 = {
let dtype = layernormalization18_out1.clone().dtype();
self.layernormalization19
.forward(
layernormalization18_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear33_out1 = self.linear33.forward(layernormalization19_out1);
let sigmoid13_out1 = burn::tensor::activation::sigmoid(linear33_out1.clone());
let mul41_out1 = linear33_out1.mul(sigmoid13_out1);
let linear34_out1 = self.linear34.forward(mul41_out1);
let mul42_out1 = linear34_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add40_out1 = layernormalization18_out1.add(mul42_out1);
let layernormalization20_out1 = {
let dtype = add40_out1.clone().dtype();
self.layernormalization20
.forward(add40_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat25_out1 = burn::tensor::Tensor::cat(
[gather7_out1.clone(), layernormalization20_out1.clone()].into(),
1,
);
let transpose54_out1 = gather7_out1.permute([1, 0, 2]);
let slice19_out1 = transpose54_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose55_out1 = slice19_out1.permute([1, 0, 2]);
let concat26_out1 = burn::tensor::Tensor::cat(
[transpose55_out1, layernormalization20_out1.clone()].into(),
1,
);
let linear35_out1 = self.linear35.forward(layernormalization20_out1);
let reshape23_out1 = linear35_out1.reshape([1, -1, 8, 128]);
let linear36_out1 = self.linear36.forward(concat25_out1.clone());
let reshape24_out1 = linear36_out1.reshape([1, -1, 8, 128]);
let linear37_out1 = self.linear37.forward(concat25_out1);
let reshape25_out1 = linear37_out1.reshape([1, -1, 8, 128]);
let transpose56_out1 = reshape24_out1.permute([0, 2, 1, 3]);
let transpose57_out1 = reshape25_out1.permute([0, 2, 1, 3]);
let linear38_out1 = self.linear38.forward(transpose6_out1);
let reshape26_out1 = linear38_out1.reshape([1, -1, 8, 128]);
let constant74_out1 = self.constant74.val();
let add41_out1 = reshape23_out1
.clone()
.add((constant74_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose58_out1 = add41_out1.permute([0, 2, 1, 3]);
let constant75_out1 = self.constant75.val();
let add42_out1 = reshape23_out1
.add((constant75_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose59_out1 = add42_out1.permute([0, 2, 1, 3]);
let transpose60_out1 = reshape26_out1.permute([0, 2, 3, 1]);
let matmul48_out1 = transpose59_out1.matmul(transpose60_out1);
let pad7_out1 = matmul48_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape27_out1 = pad7_out1.reshape(concat16_out1);
let slice20_out1 = reshape27_out1.slice(s![.., .., 1.., ..]);
let reshape28_out1 = slice20_out1.reshape(concat17_out1);
let transpose61_out1 = reshape28_out1.permute([3, 0, 1, 2]);
let slice21_out1 = transpose61_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose62_out1 = slice21_out1.permute([1, 2, 3, 0]);
let mul43_out1 = transpose62_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where10_out1 = mul43_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention4_out1,) = {
let q = transpose58_out1;
let k = transpose56_out1;
let v = transpose57_out1;
let score_bias = where10_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention4_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention4_out1 = {
let dims = attention4_out1.dims();
attention4_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention4_out1,)
};
let where11_out1 = attention4_out1.mask_fill(expand15_out1, constant453_out1);
let transpose63_out1 = where11_out1.permute([0, 2, 1, 3]);
let reshape29_out1 = transpose63_out1.reshape([1, -1, 1024]);
let linear39_out1 = self.linear39.forward(reshape29_out1);
let add43_out1 = add40_out1.add(linear39_out1);
(add43_out1, gather8_out1, concat26_out1, slice18_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule7 {
layernormalization21: LayerNorm,
squeeze8: burn::module::Param<Tensor<2>>,
conv1d4: Conv1d,
layernormalization22: LayerNorm,
squeeze9: burn::module::Param<Tensor<2>>,
layernormalization23: LayerNorm,
linear40: Linear,
linear41: Linear,
layernormalization24: LayerNorm,
layernormalization25: LayerNorm,
linear42: Linear,
linear43: Linear,
layernormalization26: LayerNorm,
linear44: Linear,
linear45: Linear,
linear46: Linear,
linear47: Linear,
constant91: burn::module::Param<Tensor<2>>,
constant92: burn::module::Param<Tensor<2>>,
linear48: Linear,
#[module(skip)]
device: Device,
}
impl Submodule7 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization21 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze8: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d4 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization22 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze9: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization23 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear40 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear41 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization24 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization25 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear42 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear43 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization26 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear44 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear45 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear46 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear47 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant91: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant92: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear48 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization21,
squeeze8,
conv1d4,
layernormalization22,
squeeze9,
layernormalization23,
linear40,
linear41,
layernormalization24,
layernormalization25,
linear42,
linear43,
layernormalization26,
linear44,
linear45,
linear46,
linear47,
constant91,
constant92,
linear48,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add43_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather8_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization21_out1 = {
let dtype = add43_out1.clone().dtype();
self.layernormalization21
.forward(add43_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze8_out1 = self.squeeze8.val();
let transpose64_out1 = squeeze8_out1.permute([1, 0]);
let matmul50_out1 = layernormalization21_out1
.matmul(transpose64_out1.unsqueeze::<3usize>());
let split_tensors = matmul50_out1.split_with_sizes([1024, 1024].into(), 2);
let [split4_out1, split4_out2] = split_tensors.try_into().unwrap();
let sigmoid14_out1 = burn::tensor::activation::sigmoid(split4_out2);
let mul44_out1 = split4_out1.mul(sigmoid14_out1);
let transpose65_out1 = mul44_out1.permute([0, 2, 1]);
let where12_out1 = transpose65_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad8_out1 = where12_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat27_out1 = burn::tensor::Tensor::cat(
[gather8_out1, pad8_out1].into(),
2,
);
let slice22_out1 = concat27_out1.clone().slice(s![.., .., - 8..]);
let conv1d4_out1 = self.conv1d4.forward(concat27_out1);
let transpose66_out1 = conv1d4_out1.permute([0, 2, 1]);
let layernormalization22_out1 = {
let dtype = transpose66_out1.dtype();
self.layernormalization22
.forward(transpose66_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid15_out1 = burn::tensor::activation::sigmoid(
layernormalization22_out1.clone(),
);
let mul45_out1 = layernormalization22_out1.mul(sigmoid15_out1);
let squeeze9_out1 = self.squeeze9.val();
let transpose67_out1 = squeeze9_out1.permute([1, 0]);
let matmul51_out1 = mul45_out1.matmul(transpose67_out1.unsqueeze::<3usize>());
let add44_out1 = add43_out1.add(matmul51_out1);
let layernormalization23_out1 = {
let dtype = add44_out1.clone().dtype();
self.layernormalization23
.forward(add44_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear40_out1 = self.linear40.forward(layernormalization23_out1);
let sigmoid16_out1 = burn::tensor::activation::sigmoid(linear40_out1.clone());
let mul46_out1 = linear40_out1.mul(sigmoid16_out1);
let linear41_out1 = self.linear41.forward(mul46_out1);
let mul47_out1 = linear41_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add45_out1 = add44_out1.add(mul47_out1);
let layernormalization24_out1 = {
let dtype = add45_out1.dtype();
self.layernormalization24
.forward(add45_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather9_out1 = {
let sliced = transpose1_out1.slice(s![4, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather10_out1 = {
let sliced = transpose2_out1.slice(s![4, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization25_out1 = {
let dtype = layernormalization24_out1.clone().dtype();
self.layernormalization25
.forward(
layernormalization24_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear42_out1 = self.linear42.forward(layernormalization25_out1);
let sigmoid17_out1 = burn::tensor::activation::sigmoid(linear42_out1.clone());
let mul48_out1 = linear42_out1.mul(sigmoid17_out1);
let linear43_out1 = self.linear43.forward(mul48_out1);
let mul49_out1 = linear43_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add46_out1 = layernormalization24_out1.add(mul49_out1);
let layernormalization26_out1 = {
let dtype = add46_out1.clone().dtype();
self.layernormalization26
.forward(add46_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat28_out1 = burn::tensor::Tensor::cat(
[gather9_out1.clone(), layernormalization26_out1.clone()].into(),
1,
);
let transpose68_out1 = gather9_out1.permute([1, 0, 2]);
let slice23_out1 = transpose68_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose69_out1 = slice23_out1.permute([1, 0, 2]);
let concat29_out1 = burn::tensor::Tensor::cat(
[transpose69_out1, layernormalization26_out1.clone()].into(),
1,
);
let linear44_out1 = self.linear44.forward(layernormalization26_out1);
let reshape30_out1 = linear44_out1.reshape([1, -1, 8, 128]);
let linear45_out1 = self.linear45.forward(concat28_out1.clone());
let reshape31_out1 = linear45_out1.reshape([1, -1, 8, 128]);
let linear46_out1 = self.linear46.forward(concat28_out1);
let reshape32_out1 = linear46_out1.reshape([1, -1, 8, 128]);
let transpose70_out1 = reshape31_out1.permute([0, 2, 1, 3]);
let transpose71_out1 = reshape32_out1.permute([0, 2, 1, 3]);
let linear47_out1 = self.linear47.forward(transpose6_out1);
let reshape33_out1 = linear47_out1.reshape([1, -1, 8, 128]);
let constant91_out1 = self.constant91.val();
let add47_out1 = reshape30_out1
.clone()
.add((constant91_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose72_out1 = add47_out1.permute([0, 2, 1, 3]);
let constant92_out1 = self.constant92.val();
let add48_out1 = reshape30_out1
.add((constant92_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose73_out1 = add48_out1.permute([0, 2, 1, 3]);
let transpose74_out1 = reshape33_out1.permute([0, 2, 3, 1]);
let matmul60_out1 = transpose73_out1.matmul(transpose74_out1);
let pad9_out1 = matmul60_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape34_out1 = pad9_out1.reshape(concat16_out1);
let slice24_out1 = reshape34_out1.slice(s![.., .., 1.., ..]);
let reshape35_out1 = slice24_out1.reshape(concat17_out1);
let transpose75_out1 = reshape35_out1.permute([3, 0, 1, 2]);
let slice25_out1 = transpose75_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose76_out1 = slice25_out1.permute([1, 2, 3, 0]);
let mul50_out1 = transpose76_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where13_out1 = mul50_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention5_out1,) = {
let q = transpose72_out1;
let k = transpose70_out1;
let v = transpose71_out1;
let score_bias = where13_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention5_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention5_out1 = {
let dims = attention5_out1.dims();
attention5_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention5_out1,)
};
let where14_out1 = attention5_out1.mask_fill(expand15_out1, constant453_out1);
let transpose77_out1 = where14_out1.permute([0, 2, 1, 3]);
let reshape36_out1 = transpose77_out1.reshape([1, -1, 1024]);
let linear48_out1 = self.linear48.forward(reshape36_out1);
let add49_out1 = add46_out1.add(linear48_out1);
(add49_out1, gather10_out1, concat29_out1, slice22_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule8 {
layernormalization27: LayerNorm,
squeeze10: burn::module::Param<Tensor<2>>,
conv1d5: Conv1d,
layernormalization28: LayerNorm,
squeeze11: burn::module::Param<Tensor<2>>,
layernormalization29: LayerNorm,
linear49: Linear,
linear50: Linear,
layernormalization30: LayerNorm,
layernormalization31: LayerNorm,
linear51: Linear,
linear52: Linear,
layernormalization32: LayerNorm,
linear53: Linear,
linear54: Linear,
linear55: Linear,
linear56: Linear,
constant108: burn::module::Param<Tensor<2>>,
constant109: burn::module::Param<Tensor<2>>,
linear57: Linear,
#[module(skip)]
device: Device,
}
impl Submodule8 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization27 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze10: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d5 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization28 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze11: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization29 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear49 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear50 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization30 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization31 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear51 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear52 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization32 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear53 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear54 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear55 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear56 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant108: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant109: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear57 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization27,
squeeze10,
conv1d5,
layernormalization28,
squeeze11,
layernormalization29,
linear49,
linear50,
layernormalization30,
layernormalization31,
linear51,
linear52,
layernormalization32,
linear53,
linear54,
linear55,
linear56,
constant108,
constant109,
linear57,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add49_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather10_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization27_out1 = {
let dtype = add49_out1.clone().dtype();
self.layernormalization27
.forward(add49_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze10_out1 = self.squeeze10.val();
let transpose78_out1 = squeeze10_out1.permute([1, 0]);
let matmul62_out1 = layernormalization27_out1
.matmul(transpose78_out1.unsqueeze::<3usize>());
let split_tensors = matmul62_out1.split_with_sizes([1024, 1024].into(), 2);
let [split5_out1, split5_out2] = split_tensors.try_into().unwrap();
let sigmoid18_out1 = burn::tensor::activation::sigmoid(split5_out2);
let mul51_out1 = split5_out1.mul(sigmoid18_out1);
let transpose79_out1 = mul51_out1.permute([0, 2, 1]);
let where15_out1 = transpose79_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad10_out1 = where15_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat30_out1 = burn::tensor::Tensor::cat(
[gather10_out1, pad10_out1].into(),
2,
);
let slice26_out1 = concat30_out1.clone().slice(s![.., .., - 8..]);
let conv1d5_out1 = self.conv1d5.forward(concat30_out1);
let transpose80_out1 = conv1d5_out1.permute([0, 2, 1]);
let layernormalization28_out1 = {
let dtype = transpose80_out1.dtype();
self.layernormalization28
.forward(transpose80_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid19_out1 = burn::tensor::activation::sigmoid(
layernormalization28_out1.clone(),
);
let mul52_out1 = layernormalization28_out1.mul(sigmoid19_out1);
let squeeze11_out1 = self.squeeze11.val();
let transpose81_out1 = squeeze11_out1.permute([1, 0]);
let matmul63_out1 = mul52_out1.matmul(transpose81_out1.unsqueeze::<3usize>());
let add50_out1 = add49_out1.add(matmul63_out1);
let layernormalization29_out1 = {
let dtype = add50_out1.clone().dtype();
self.layernormalization29
.forward(add50_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear49_out1 = self.linear49.forward(layernormalization29_out1);
let sigmoid20_out1 = burn::tensor::activation::sigmoid(linear49_out1.clone());
let mul53_out1 = linear49_out1.mul(sigmoid20_out1);
let linear50_out1 = self.linear50.forward(mul53_out1);
let mul54_out1 = linear50_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add51_out1 = add50_out1.add(mul54_out1);
let layernormalization30_out1 = {
let dtype = add51_out1.dtype();
self.layernormalization30
.forward(add51_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather11_out1 = {
let sliced = transpose1_out1.slice(s![5, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather12_out1 = {
let sliced = transpose2_out1.slice(s![5, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization31_out1 = {
let dtype = layernormalization30_out1.clone().dtype();
self.layernormalization31
.forward(
layernormalization30_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear51_out1 = self.linear51.forward(layernormalization31_out1);
let sigmoid21_out1 = burn::tensor::activation::sigmoid(linear51_out1.clone());
let mul55_out1 = linear51_out1.mul(sigmoid21_out1);
let linear52_out1 = self.linear52.forward(mul55_out1);
let mul56_out1 = linear52_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add52_out1 = layernormalization30_out1.add(mul56_out1);
let layernormalization32_out1 = {
let dtype = add52_out1.clone().dtype();
self.layernormalization32
.forward(add52_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat31_out1 = burn::tensor::Tensor::cat(
[gather11_out1.clone(), layernormalization32_out1.clone()].into(),
1,
);
let transpose82_out1 = gather11_out1.permute([1, 0, 2]);
let slice27_out1 = transpose82_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose83_out1 = slice27_out1.permute([1, 0, 2]);
let concat32_out1 = burn::tensor::Tensor::cat(
[transpose83_out1, layernormalization32_out1.clone()].into(),
1,
);
let linear53_out1 = self.linear53.forward(layernormalization32_out1);
let reshape37_out1 = linear53_out1.reshape([1, -1, 8, 128]);
let linear54_out1 = self.linear54.forward(concat31_out1.clone());
let reshape38_out1 = linear54_out1.reshape([1, -1, 8, 128]);
let linear55_out1 = self.linear55.forward(concat31_out1);
let reshape39_out1 = linear55_out1.reshape([1, -1, 8, 128]);
let transpose84_out1 = reshape38_out1.permute([0, 2, 1, 3]);
let transpose85_out1 = reshape39_out1.permute([0, 2, 1, 3]);
let linear56_out1 = self.linear56.forward(transpose6_out1);
let reshape40_out1 = linear56_out1.reshape([1, -1, 8, 128]);
let constant108_out1 = self.constant108.val();
let add53_out1 = reshape37_out1
.clone()
.add((constant108_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose86_out1 = add53_out1.permute([0, 2, 1, 3]);
let constant109_out1 = self.constant109.val();
let add54_out1 = reshape37_out1
.add((constant109_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose87_out1 = add54_out1.permute([0, 2, 1, 3]);
let transpose88_out1 = reshape40_out1.permute([0, 2, 3, 1]);
let matmul72_out1 = transpose87_out1.matmul(transpose88_out1);
let pad11_out1 = matmul72_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape41_out1 = pad11_out1.reshape(concat16_out1);
let slice28_out1 = reshape41_out1.slice(s![.., .., 1.., ..]);
let reshape42_out1 = slice28_out1.reshape(concat17_out1);
let transpose89_out1 = reshape42_out1.permute([3, 0, 1, 2]);
let slice29_out1 = transpose89_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose90_out1 = slice29_out1.permute([1, 2, 3, 0]);
let mul57_out1 = transpose90_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where16_out1 = mul57_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention6_out1,) = {
let q = transpose86_out1;
let k = transpose84_out1;
let v = transpose85_out1;
let score_bias = where16_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention6_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention6_out1 = {
let dims = attention6_out1.dims();
attention6_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention6_out1,)
};
let where17_out1 = attention6_out1.mask_fill(expand15_out1, constant453_out1);
let transpose91_out1 = where17_out1.permute([0, 2, 1, 3]);
let reshape43_out1 = transpose91_out1.reshape([1, -1, 1024]);
let linear57_out1 = self.linear57.forward(reshape43_out1);
let add55_out1 = add52_out1.add(linear57_out1);
(add55_out1, gather12_out1, concat32_out1, slice26_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule9 {
layernormalization33: LayerNorm,
squeeze12: burn::module::Param<Tensor<2>>,
conv1d6: Conv1d,
layernormalization34: LayerNorm,
squeeze13: burn::module::Param<Tensor<2>>,
layernormalization35: LayerNorm,
linear58: Linear,
linear59: Linear,
layernormalization36: LayerNorm,
layernormalization37: LayerNorm,
linear60: Linear,
linear61: Linear,
layernormalization38: LayerNorm,
linear62: Linear,
linear63: Linear,
linear64: Linear,
linear65: Linear,
constant125: burn::module::Param<Tensor<2>>,
constant126: burn::module::Param<Tensor<2>>,
linear66: Linear,
#[module(skip)]
device: Device,
}
impl Submodule9 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization33 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze12: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d6 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization34 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze13: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization35 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear58 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear59 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization36 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization37 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear60 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear61 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization38 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear62 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear63 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear64 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear65 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant125: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant126: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear66 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization33,
squeeze12,
conv1d6,
layernormalization34,
squeeze13,
layernormalization35,
linear58,
linear59,
layernormalization36,
layernormalization37,
linear60,
linear61,
layernormalization38,
linear62,
linear63,
linear64,
linear65,
constant125,
constant126,
linear66,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add55_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather12_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization33_out1 = {
let dtype = add55_out1.clone().dtype();
self.layernormalization33
.forward(add55_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze12_out1 = self.squeeze12.val();
let transpose92_out1 = squeeze12_out1.permute([1, 0]);
let matmul74_out1 = layernormalization33_out1
.matmul(transpose92_out1.unsqueeze::<3usize>());
let split_tensors = matmul74_out1.split_with_sizes([1024, 1024].into(), 2);
let [split6_out1, split6_out2] = split_tensors.try_into().unwrap();
let sigmoid22_out1 = burn::tensor::activation::sigmoid(split6_out2);
let mul58_out1 = split6_out1.mul(sigmoid22_out1);
let transpose93_out1 = mul58_out1.permute([0, 2, 1]);
let where18_out1 = transpose93_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad12_out1 = where18_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat33_out1 = burn::tensor::Tensor::cat(
[gather12_out1, pad12_out1].into(),
2,
);
let slice30_out1 = concat33_out1.clone().slice(s![.., .., - 8..]);
let conv1d6_out1 = self.conv1d6.forward(concat33_out1);
let transpose94_out1 = conv1d6_out1.permute([0, 2, 1]);
let layernormalization34_out1 = {
let dtype = transpose94_out1.dtype();
self.layernormalization34
.forward(transpose94_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid23_out1 = burn::tensor::activation::sigmoid(
layernormalization34_out1.clone(),
);
let mul59_out1 = layernormalization34_out1.mul(sigmoid23_out1);
let squeeze13_out1 = self.squeeze13.val();
let transpose95_out1 = squeeze13_out1.permute([1, 0]);
let matmul75_out1 = mul59_out1.matmul(transpose95_out1.unsqueeze::<3usize>());
let add56_out1 = add55_out1.add(matmul75_out1);
let layernormalization35_out1 = {
let dtype = add56_out1.clone().dtype();
self.layernormalization35
.forward(add56_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear58_out1 = self.linear58.forward(layernormalization35_out1);
let sigmoid24_out1 = burn::tensor::activation::sigmoid(linear58_out1.clone());
let mul60_out1 = linear58_out1.mul(sigmoid24_out1);
let linear59_out1 = self.linear59.forward(mul60_out1);
let mul61_out1 = linear59_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add57_out1 = add56_out1.add(mul61_out1);
let layernormalization36_out1 = {
let dtype = add57_out1.dtype();
self.layernormalization36
.forward(add57_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather13_out1 = {
let sliced = transpose1_out1.slice(s![6, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather14_out1 = {
let sliced = transpose2_out1.slice(s![6, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization37_out1 = {
let dtype = layernormalization36_out1.clone().dtype();
self.layernormalization37
.forward(
layernormalization36_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear60_out1 = self.linear60.forward(layernormalization37_out1);
let sigmoid25_out1 = burn::tensor::activation::sigmoid(linear60_out1.clone());
let mul62_out1 = linear60_out1.mul(sigmoid25_out1);
let linear61_out1 = self.linear61.forward(mul62_out1);
let mul63_out1 = linear61_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add58_out1 = layernormalization36_out1.add(mul63_out1);
let layernormalization38_out1 = {
let dtype = add58_out1.clone().dtype();
self.layernormalization38
.forward(add58_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat34_out1 = burn::tensor::Tensor::cat(
[gather13_out1.clone(), layernormalization38_out1.clone()].into(),
1,
);
let transpose96_out1 = gather13_out1.permute([1, 0, 2]);
let slice31_out1 = transpose96_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose97_out1 = slice31_out1.permute([1, 0, 2]);
let concat35_out1 = burn::tensor::Tensor::cat(
[transpose97_out1, layernormalization38_out1.clone()].into(),
1,
);
let linear62_out1 = self.linear62.forward(layernormalization38_out1);
let reshape44_out1 = linear62_out1.reshape([1, -1, 8, 128]);
let linear63_out1 = self.linear63.forward(concat34_out1.clone());
let reshape45_out1 = linear63_out1.reshape([1, -1, 8, 128]);
let linear64_out1 = self.linear64.forward(concat34_out1);
let reshape46_out1 = linear64_out1.reshape([1, -1, 8, 128]);
let transpose98_out1 = reshape45_out1.permute([0, 2, 1, 3]);
let transpose99_out1 = reshape46_out1.permute([0, 2, 1, 3]);
let linear65_out1 = self.linear65.forward(transpose6_out1);
let reshape47_out1 = linear65_out1.reshape([1, -1, 8, 128]);
let constant125_out1 = self.constant125.val();
let add59_out1 = reshape44_out1
.clone()
.add((constant125_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose100_out1 = add59_out1.permute([0, 2, 1, 3]);
let constant126_out1 = self.constant126.val();
let add60_out1 = reshape44_out1
.add((constant126_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose101_out1 = add60_out1.permute([0, 2, 1, 3]);
let transpose102_out1 = reshape47_out1.permute([0, 2, 3, 1]);
let matmul84_out1 = transpose101_out1.matmul(transpose102_out1);
let pad13_out1 = matmul84_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape48_out1 = pad13_out1.reshape(concat16_out1);
let slice32_out1 = reshape48_out1.slice(s![.., .., 1.., ..]);
let reshape49_out1 = slice32_out1.reshape(concat17_out1);
let transpose103_out1 = reshape49_out1.permute([3, 0, 1, 2]);
let slice33_out1 = transpose103_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose104_out1 = slice33_out1.permute([1, 2, 3, 0]);
let mul64_out1 = transpose104_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where19_out1 = mul64_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention7_out1,) = {
let q = transpose100_out1;
let k = transpose98_out1;
let v = transpose99_out1;
let score_bias = where19_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention7_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention7_out1 = {
let dims = attention7_out1.dims();
attention7_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention7_out1,)
};
let where20_out1 = attention7_out1.mask_fill(expand15_out1, constant453_out1);
let transpose105_out1 = where20_out1.permute([0, 2, 1, 3]);
let reshape50_out1 = transpose105_out1.reshape([1, -1, 1024]);
let linear66_out1 = self.linear66.forward(reshape50_out1);
let add61_out1 = add58_out1.add(linear66_out1);
(add61_out1, gather14_out1, concat35_out1, slice30_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule10 {
layernormalization39: LayerNorm,
squeeze14: burn::module::Param<Tensor<2>>,
conv1d7: Conv1d,
layernormalization40: LayerNorm,
squeeze15: burn::module::Param<Tensor<2>>,
layernormalization41: LayerNorm,
linear67: Linear,
linear68: Linear,
layernormalization42: LayerNorm,
layernormalization43: LayerNorm,
linear69: Linear,
linear70: Linear,
layernormalization44: LayerNorm,
linear71: Linear,
linear72: Linear,
linear73: Linear,
linear74: Linear,
constant142: burn::module::Param<Tensor<2>>,
constant143: burn::module::Param<Tensor<2>>,
linear75: Linear,
#[module(skip)]
device: Device,
}
impl Submodule10 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization39 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze14: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d7 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization40 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze15: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization41 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear67 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear68 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization42 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization43 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear69 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear70 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization44 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear71 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear72 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear73 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear74 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant142: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant143: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear75 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization39,
squeeze14,
conv1d7,
layernormalization40,
squeeze15,
layernormalization41,
linear67,
linear68,
layernormalization42,
layernormalization43,
linear69,
linear70,
layernormalization44,
linear71,
linear72,
linear73,
linear74,
constant142,
constant143,
linear75,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add61_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather14_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization39_out1 = {
let dtype = add61_out1.clone().dtype();
self.layernormalization39
.forward(add61_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze14_out1 = self.squeeze14.val();
let transpose106_out1 = squeeze14_out1.permute([1, 0]);
let matmul86_out1 = layernormalization39_out1
.matmul(transpose106_out1.unsqueeze::<3usize>());
let split_tensors = matmul86_out1.split_with_sizes([1024, 1024].into(), 2);
let [split7_out1, split7_out2] = split_tensors.try_into().unwrap();
let sigmoid26_out1 = burn::tensor::activation::sigmoid(split7_out2);
let mul65_out1 = split7_out1.mul(sigmoid26_out1);
let transpose107_out1 = mul65_out1.permute([0, 2, 1]);
let where21_out1 = transpose107_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad14_out1 = where21_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat36_out1 = burn::tensor::Tensor::cat(
[gather14_out1, pad14_out1].into(),
2,
);
let slice34_out1 = concat36_out1.clone().slice(s![.., .., - 8..]);
let conv1d7_out1 = self.conv1d7.forward(concat36_out1);
let transpose108_out1 = conv1d7_out1.permute([0, 2, 1]);
let layernormalization40_out1 = {
let dtype = transpose108_out1.dtype();
self.layernormalization40
.forward(transpose108_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid27_out1 = burn::tensor::activation::sigmoid(
layernormalization40_out1.clone(),
);
let mul66_out1 = layernormalization40_out1.mul(sigmoid27_out1);
let squeeze15_out1 = self.squeeze15.val();
let transpose109_out1 = squeeze15_out1.permute([1, 0]);
let matmul87_out1 = mul66_out1.matmul(transpose109_out1.unsqueeze::<3usize>());
let add62_out1 = add61_out1.add(matmul87_out1);
let layernormalization41_out1 = {
let dtype = add62_out1.clone().dtype();
self.layernormalization41
.forward(add62_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear67_out1 = self.linear67.forward(layernormalization41_out1);
let sigmoid28_out1 = burn::tensor::activation::sigmoid(linear67_out1.clone());
let mul67_out1 = linear67_out1.mul(sigmoid28_out1);
let linear68_out1 = self.linear68.forward(mul67_out1);
let mul68_out1 = linear68_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add63_out1 = add62_out1.add(mul68_out1);
let layernormalization42_out1 = {
let dtype = add63_out1.dtype();
self.layernormalization42
.forward(add63_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather15_out1 = {
let sliced = transpose1_out1.slice(s![7, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather16_out1 = {
let sliced = transpose2_out1.slice(s![7, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization43_out1 = {
let dtype = layernormalization42_out1.clone().dtype();
self.layernormalization43
.forward(
layernormalization42_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear69_out1 = self.linear69.forward(layernormalization43_out1);
let sigmoid29_out1 = burn::tensor::activation::sigmoid(linear69_out1.clone());
let mul69_out1 = linear69_out1.mul(sigmoid29_out1);
let linear70_out1 = self.linear70.forward(mul69_out1);
let mul70_out1 = linear70_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add64_out1 = layernormalization42_out1.add(mul70_out1);
let layernormalization44_out1 = {
let dtype = add64_out1.clone().dtype();
self.layernormalization44
.forward(add64_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat37_out1 = burn::tensor::Tensor::cat(
[gather15_out1.clone(), layernormalization44_out1.clone()].into(),
1,
);
let transpose110_out1 = gather15_out1.permute([1, 0, 2]);
let slice35_out1 = transpose110_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose111_out1 = slice35_out1.permute([1, 0, 2]);
let concat38_out1 = burn::tensor::Tensor::cat(
[transpose111_out1, layernormalization44_out1.clone()].into(),
1,
);
let linear71_out1 = self.linear71.forward(layernormalization44_out1);
let reshape51_out1 = linear71_out1.reshape([1, -1, 8, 128]);
let linear72_out1 = self.linear72.forward(concat37_out1.clone());
let reshape52_out1 = linear72_out1.reshape([1, -1, 8, 128]);
let linear73_out1 = self.linear73.forward(concat37_out1);
let reshape53_out1 = linear73_out1.reshape([1, -1, 8, 128]);
let transpose112_out1 = reshape52_out1.permute([0, 2, 1, 3]);
let transpose113_out1 = reshape53_out1.permute([0, 2, 1, 3]);
let linear74_out1 = self.linear74.forward(transpose6_out1);
let reshape54_out1 = linear74_out1.reshape([1, -1, 8, 128]);
let constant142_out1 = self.constant142.val();
let add65_out1 = reshape51_out1
.clone()
.add((constant142_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose114_out1 = add65_out1.permute([0, 2, 1, 3]);
let constant143_out1 = self.constant143.val();
let add66_out1 = reshape51_out1
.add((constant143_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose115_out1 = add66_out1.permute([0, 2, 1, 3]);
let transpose116_out1 = reshape54_out1.permute([0, 2, 3, 1]);
let matmul96_out1 = transpose115_out1.matmul(transpose116_out1);
let pad15_out1 = matmul96_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape55_out1 = pad15_out1.reshape(concat16_out1);
let slice36_out1 = reshape55_out1.slice(s![.., .., 1.., ..]);
let reshape56_out1 = slice36_out1.reshape(concat17_out1);
let transpose117_out1 = reshape56_out1.permute([3, 0, 1, 2]);
let slice37_out1 = transpose117_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose118_out1 = slice37_out1.permute([1, 2, 3, 0]);
let mul71_out1 = transpose118_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where22_out1 = mul71_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention8_out1,) = {
let q = transpose114_out1;
let k = transpose112_out1;
let v = transpose113_out1;
let score_bias = where22_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention8_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention8_out1 = {
let dims = attention8_out1.dims();
attention8_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention8_out1,)
};
let where23_out1 = attention8_out1.mask_fill(expand15_out1, constant453_out1);
let transpose119_out1 = where23_out1.permute([0, 2, 1, 3]);
let reshape57_out1 = transpose119_out1.reshape([1, -1, 1024]);
let linear75_out1 = self.linear75.forward(reshape57_out1);
let add67_out1 = add64_out1.add(linear75_out1);
(add67_out1, gather16_out1, concat38_out1, slice34_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule11 {
layernormalization45: LayerNorm,
squeeze16: burn::module::Param<Tensor<2>>,
conv1d8: Conv1d,
layernormalization46: LayerNorm,
squeeze17: burn::module::Param<Tensor<2>>,
layernormalization47: LayerNorm,
linear76: Linear,
linear77: Linear,
layernormalization48: LayerNorm,
layernormalization49: LayerNorm,
linear78: Linear,
linear79: Linear,
layernormalization50: LayerNorm,
linear80: Linear,
linear81: Linear,
linear82: Linear,
linear83: Linear,
constant159: burn::module::Param<Tensor<2>>,
constant160: burn::module::Param<Tensor<2>>,
linear84: Linear,
#[module(skip)]
device: Device,
}
impl Submodule11 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization45 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze16: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d8 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization46 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze17: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization47 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear76 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear77 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization48 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization49 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear78 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear79 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization50 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear80 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear81 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear82 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear83 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant159: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant160: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear84 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization45,
squeeze16,
conv1d8,
layernormalization46,
squeeze17,
layernormalization47,
linear76,
linear77,
layernormalization48,
layernormalization49,
linear78,
linear79,
layernormalization50,
linear80,
linear81,
linear82,
linear83,
constant159,
constant160,
linear84,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add67_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather16_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization45_out1 = {
let dtype = add67_out1.clone().dtype();
self.layernormalization45
.forward(add67_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze16_out1 = self.squeeze16.val();
let transpose120_out1 = squeeze16_out1.permute([1, 0]);
let matmul98_out1 = layernormalization45_out1
.matmul(transpose120_out1.unsqueeze::<3usize>());
let split_tensors = matmul98_out1.split_with_sizes([1024, 1024].into(), 2);
let [split8_out1, split8_out2] = split_tensors.try_into().unwrap();
let sigmoid30_out1 = burn::tensor::activation::sigmoid(split8_out2);
let mul72_out1 = split8_out1.mul(sigmoid30_out1);
let transpose121_out1 = mul72_out1.permute([0, 2, 1]);
let where24_out1 = transpose121_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad16_out1 = where24_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat39_out1 = burn::tensor::Tensor::cat(
[gather16_out1, pad16_out1].into(),
2,
);
let slice38_out1 = concat39_out1.clone().slice(s![.., .., - 8..]);
let conv1d8_out1 = self.conv1d8.forward(concat39_out1);
let transpose122_out1 = conv1d8_out1.permute([0, 2, 1]);
let layernormalization46_out1 = {
let dtype = transpose122_out1.dtype();
self.layernormalization46
.forward(transpose122_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid31_out1 = burn::tensor::activation::sigmoid(
layernormalization46_out1.clone(),
);
let mul73_out1 = layernormalization46_out1.mul(sigmoid31_out1);
let squeeze17_out1 = self.squeeze17.val();
let transpose123_out1 = squeeze17_out1.permute([1, 0]);
let matmul99_out1 = mul73_out1.matmul(transpose123_out1.unsqueeze::<3usize>());
let add68_out1 = add67_out1.add(matmul99_out1);
let layernormalization47_out1 = {
let dtype = add68_out1.clone().dtype();
self.layernormalization47
.forward(add68_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear76_out1 = self.linear76.forward(layernormalization47_out1);
let sigmoid32_out1 = burn::tensor::activation::sigmoid(linear76_out1.clone());
let mul74_out1 = linear76_out1.mul(sigmoid32_out1);
let linear77_out1 = self.linear77.forward(mul74_out1);
let mul75_out1 = linear77_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add69_out1 = add68_out1.add(mul75_out1);
let layernormalization48_out1 = {
let dtype = add69_out1.dtype();
self.layernormalization48
.forward(add69_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather17_out1 = {
let sliced = transpose1_out1.slice(s![8, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather18_out1 = {
let sliced = transpose2_out1.slice(s![8, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization49_out1 = {
let dtype = layernormalization48_out1.clone().dtype();
self.layernormalization49
.forward(
layernormalization48_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear78_out1 = self.linear78.forward(layernormalization49_out1);
let sigmoid33_out1 = burn::tensor::activation::sigmoid(linear78_out1.clone());
let mul76_out1 = linear78_out1.mul(sigmoid33_out1);
let linear79_out1 = self.linear79.forward(mul76_out1);
let mul77_out1 = linear79_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add70_out1 = layernormalization48_out1.add(mul77_out1);
let layernormalization50_out1 = {
let dtype = add70_out1.clone().dtype();
self.layernormalization50
.forward(add70_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat40_out1 = burn::tensor::Tensor::cat(
[gather17_out1.clone(), layernormalization50_out1.clone()].into(),
1,
);
let transpose124_out1 = gather17_out1.permute([1, 0, 2]);
let slice39_out1 = transpose124_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose125_out1 = slice39_out1.permute([1, 0, 2]);
let concat41_out1 = burn::tensor::Tensor::cat(
[transpose125_out1, layernormalization50_out1.clone()].into(),
1,
);
let linear80_out1 = self.linear80.forward(layernormalization50_out1);
let reshape58_out1 = linear80_out1.reshape([1, -1, 8, 128]);
let linear81_out1 = self.linear81.forward(concat40_out1.clone());
let reshape59_out1 = linear81_out1.reshape([1, -1, 8, 128]);
let linear82_out1 = self.linear82.forward(concat40_out1);
let reshape60_out1 = linear82_out1.reshape([1, -1, 8, 128]);
let transpose126_out1 = reshape59_out1.permute([0, 2, 1, 3]);
let transpose127_out1 = reshape60_out1.permute([0, 2, 1, 3]);
let linear83_out1 = self.linear83.forward(transpose6_out1);
let reshape61_out1 = linear83_out1.reshape([1, -1, 8, 128]);
let constant159_out1 = self.constant159.val();
let add71_out1 = reshape58_out1
.clone()
.add((constant159_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose128_out1 = add71_out1.permute([0, 2, 1, 3]);
let constant160_out1 = self.constant160.val();
let add72_out1 = reshape58_out1
.add((constant160_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose129_out1 = add72_out1.permute([0, 2, 1, 3]);
let transpose130_out1 = reshape61_out1.permute([0, 2, 3, 1]);
let matmul108_out1 = transpose129_out1.matmul(transpose130_out1);
let pad17_out1 = matmul108_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape62_out1 = pad17_out1.reshape(concat16_out1);
let slice40_out1 = reshape62_out1.slice(s![.., .., 1.., ..]);
let reshape63_out1 = slice40_out1.reshape(concat17_out1);
let transpose131_out1 = reshape63_out1.permute([3, 0, 1, 2]);
let slice41_out1 = transpose131_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose132_out1 = slice41_out1.permute([1, 2, 3, 0]);
let mul78_out1 = transpose132_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where25_out1 = mul78_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention9_out1,) = {
let q = transpose128_out1;
let k = transpose126_out1;
let v = transpose127_out1;
let score_bias = where25_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention9_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention9_out1 = {
let dims = attention9_out1.dims();
attention9_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention9_out1,)
};
let where26_out1 = attention9_out1.mask_fill(expand15_out1, constant453_out1);
let transpose133_out1 = where26_out1.permute([0, 2, 1, 3]);
let reshape64_out1 = transpose133_out1.reshape([1, -1, 1024]);
let linear84_out1 = self.linear84.forward(reshape64_out1);
let add73_out1 = add70_out1.add(linear84_out1);
(add73_out1, gather18_out1, concat41_out1, slice38_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule12 {
layernormalization51: LayerNorm,
squeeze18: burn::module::Param<Tensor<2>>,
conv1d9: Conv1d,
layernormalization52: LayerNorm,
squeeze19: burn::module::Param<Tensor<2>>,
layernormalization53: LayerNorm,
linear85: Linear,
linear86: Linear,
layernormalization54: LayerNorm,
layernormalization55: LayerNorm,
linear87: Linear,
linear88: Linear,
layernormalization56: LayerNorm,
linear89: Linear,
linear90: Linear,
linear91: Linear,
linear92: Linear,
constant176: burn::module::Param<Tensor<2>>,
constant177: burn::module::Param<Tensor<2>>,
linear93: Linear,
#[module(skip)]
device: Device,
}
impl Submodule12 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization51 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze18: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d9 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization52 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze19: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization53 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear85 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear86 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization54 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization55 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear87 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear88 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization56 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear89 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear90 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear91 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear92 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant176: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant177: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear93 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization51,
squeeze18,
conv1d9,
layernormalization52,
squeeze19,
layernormalization53,
linear85,
linear86,
layernormalization54,
layernormalization55,
linear87,
linear88,
layernormalization56,
linear89,
linear90,
linear91,
linear92,
constant176,
constant177,
linear93,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add73_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather18_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization51_out1 = {
let dtype = add73_out1.clone().dtype();
self.layernormalization51
.forward(add73_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze18_out1 = self.squeeze18.val();
let transpose134_out1 = squeeze18_out1.permute([1, 0]);
let matmul110_out1 = layernormalization51_out1
.matmul(transpose134_out1.unsqueeze::<3usize>());
let split_tensors = matmul110_out1.split_with_sizes([1024, 1024].into(), 2);
let [split9_out1, split9_out2] = split_tensors.try_into().unwrap();
let sigmoid34_out1 = burn::tensor::activation::sigmoid(split9_out2);
let mul79_out1 = split9_out1.mul(sigmoid34_out1);
let transpose135_out1 = mul79_out1.permute([0, 2, 1]);
let where27_out1 = transpose135_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad18_out1 = where27_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat42_out1 = burn::tensor::Tensor::cat(
[gather18_out1, pad18_out1].into(),
2,
);
let slice42_out1 = concat42_out1.clone().slice(s![.., .., - 8..]);
let conv1d9_out1 = self.conv1d9.forward(concat42_out1);
let transpose136_out1 = conv1d9_out1.permute([0, 2, 1]);
let layernormalization52_out1 = {
let dtype = transpose136_out1.dtype();
self.layernormalization52
.forward(transpose136_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid35_out1 = burn::tensor::activation::sigmoid(
layernormalization52_out1.clone(),
);
let mul80_out1 = layernormalization52_out1.mul(sigmoid35_out1);
let squeeze19_out1 = self.squeeze19.val();
let transpose137_out1 = squeeze19_out1.permute([1, 0]);
let matmul111_out1 = mul80_out1.matmul(transpose137_out1.unsqueeze::<3usize>());
let add74_out1 = add73_out1.add(matmul111_out1);
let layernormalization53_out1 = {
let dtype = add74_out1.clone().dtype();
self.layernormalization53
.forward(add74_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear85_out1 = self.linear85.forward(layernormalization53_out1);
let sigmoid36_out1 = burn::tensor::activation::sigmoid(linear85_out1.clone());
let mul81_out1 = linear85_out1.mul(sigmoid36_out1);
let linear86_out1 = self.linear86.forward(mul81_out1);
let mul82_out1 = linear86_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add75_out1 = add74_out1.add(mul82_out1);
let layernormalization54_out1 = {
let dtype = add75_out1.dtype();
self.layernormalization54
.forward(add75_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather19_out1 = {
let sliced = transpose1_out1.slice(s![9, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather20_out1 = {
let sliced = transpose2_out1.slice(s![9, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization55_out1 = {
let dtype = layernormalization54_out1.clone().dtype();
self.layernormalization55
.forward(
layernormalization54_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear87_out1 = self.linear87.forward(layernormalization55_out1);
let sigmoid37_out1 = burn::tensor::activation::sigmoid(linear87_out1.clone());
let mul83_out1 = linear87_out1.mul(sigmoid37_out1);
let linear88_out1 = self.linear88.forward(mul83_out1);
let mul84_out1 = linear88_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add76_out1 = layernormalization54_out1.add(mul84_out1);
let layernormalization56_out1 = {
let dtype = add76_out1.clone().dtype();
self.layernormalization56
.forward(add76_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat43_out1 = burn::tensor::Tensor::cat(
[gather19_out1.clone(), layernormalization56_out1.clone()].into(),
1,
);
let transpose138_out1 = gather19_out1.permute([1, 0, 2]);
let slice43_out1 = transpose138_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose139_out1 = slice43_out1.permute([1, 0, 2]);
let concat44_out1 = burn::tensor::Tensor::cat(
[transpose139_out1, layernormalization56_out1.clone()].into(),
1,
);
let linear89_out1 = self.linear89.forward(layernormalization56_out1);
let reshape65_out1 = linear89_out1.reshape([1, -1, 8, 128]);
let linear90_out1 = self.linear90.forward(concat43_out1.clone());
let reshape66_out1 = linear90_out1.reshape([1, -1, 8, 128]);
let linear91_out1 = self.linear91.forward(concat43_out1);
let reshape67_out1 = linear91_out1.reshape([1, -1, 8, 128]);
let transpose140_out1 = reshape66_out1.permute([0, 2, 1, 3]);
let transpose141_out1 = reshape67_out1.permute([0, 2, 1, 3]);
let linear92_out1 = self.linear92.forward(transpose6_out1);
let reshape68_out1 = linear92_out1.reshape([1, -1, 8, 128]);
let constant176_out1 = self.constant176.val();
let add77_out1 = reshape65_out1
.clone()
.add((constant176_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose142_out1 = add77_out1.permute([0, 2, 1, 3]);
let constant177_out1 = self.constant177.val();
let add78_out1 = reshape65_out1
.add((constant177_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose143_out1 = add78_out1.permute([0, 2, 1, 3]);
let transpose144_out1 = reshape68_out1.permute([0, 2, 3, 1]);
let matmul120_out1 = transpose143_out1.matmul(transpose144_out1);
let pad19_out1 = matmul120_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape69_out1 = pad19_out1.reshape(concat16_out1);
let slice44_out1 = reshape69_out1.slice(s![.., .., 1.., ..]);
let reshape70_out1 = slice44_out1.reshape(concat17_out1);
let transpose145_out1 = reshape70_out1.permute([3, 0, 1, 2]);
let slice45_out1 = transpose145_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose146_out1 = slice45_out1.permute([1, 2, 3, 0]);
let mul85_out1 = transpose146_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where28_out1 = mul85_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention10_out1,) = {
let q = transpose142_out1;
let k = transpose140_out1;
let v = transpose141_out1;
let score_bias = where28_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention10_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention10_out1 = {
let dims = attention10_out1.dims();
attention10_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention10_out1,)
};
let where29_out1 = attention10_out1.mask_fill(expand15_out1, constant453_out1);
let transpose147_out1 = where29_out1.permute([0, 2, 1, 3]);
let reshape71_out1 = transpose147_out1.reshape([1, -1, 1024]);
let linear93_out1 = self.linear93.forward(reshape71_out1);
let add79_out1 = add76_out1.add(linear93_out1);
(add79_out1, gather20_out1, concat44_out1, slice42_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule13 {
layernormalization57: LayerNorm,
squeeze20: burn::module::Param<Tensor<2>>,
conv1d10: Conv1d,
layernormalization58: LayerNorm,
squeeze21: burn::module::Param<Tensor<2>>,
layernormalization59: LayerNorm,
linear94: Linear,
linear95: Linear,
layernormalization60: LayerNorm,
layernormalization61: LayerNorm,
linear96: Linear,
linear97: Linear,
layernormalization62: LayerNorm,
linear98: Linear,
linear99: Linear,
linear100: Linear,
linear101: Linear,
constant193: burn::module::Param<Tensor<2>>,
constant194: burn::module::Param<Tensor<2>>,
linear102: Linear,
#[module(skip)]
device: Device,
}
impl Submodule13 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization57 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze20: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d10 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization58 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze21: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization59 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear94 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear95 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization60 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization61 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear96 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear97 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization62 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear98 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear99 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear100 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear101 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant193: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant194: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear102 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization57,
squeeze20,
conv1d10,
layernormalization58,
squeeze21,
layernormalization59,
linear94,
linear95,
layernormalization60,
layernormalization61,
linear96,
linear97,
layernormalization62,
linear98,
linear99,
linear100,
linear101,
constant193,
constant194,
linear102,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add79_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather20_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization57_out1 = {
let dtype = add79_out1.clone().dtype();
self.layernormalization57
.forward(add79_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze20_out1 = self.squeeze20.val();
let transpose148_out1 = squeeze20_out1.permute([1, 0]);
let matmul122_out1 = layernormalization57_out1
.matmul(transpose148_out1.unsqueeze::<3usize>());
let split_tensors = matmul122_out1.split_with_sizes([1024, 1024].into(), 2);
let [split10_out1, split10_out2] = split_tensors.try_into().unwrap();
let sigmoid38_out1 = burn::tensor::activation::sigmoid(split10_out2);
let mul86_out1 = split10_out1.mul(sigmoid38_out1);
let transpose149_out1 = mul86_out1.permute([0, 2, 1]);
let where30_out1 = transpose149_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad20_out1 = where30_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat45_out1 = burn::tensor::Tensor::cat(
[gather20_out1, pad20_out1].into(),
2,
);
let slice46_out1 = concat45_out1.clone().slice(s![.., .., - 8..]);
let conv1d10_out1 = self.conv1d10.forward(concat45_out1);
let transpose150_out1 = conv1d10_out1.permute([0, 2, 1]);
let layernormalization58_out1 = {
let dtype = transpose150_out1.dtype();
self.layernormalization58
.forward(transpose150_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid39_out1 = burn::tensor::activation::sigmoid(
layernormalization58_out1.clone(),
);
let mul87_out1 = layernormalization58_out1.mul(sigmoid39_out1);
let squeeze21_out1 = self.squeeze21.val();
let transpose151_out1 = squeeze21_out1.permute([1, 0]);
let matmul123_out1 = mul87_out1.matmul(transpose151_out1.unsqueeze::<3usize>());
let add80_out1 = add79_out1.add(matmul123_out1);
let layernormalization59_out1 = {
let dtype = add80_out1.clone().dtype();
self.layernormalization59
.forward(add80_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear94_out1 = self.linear94.forward(layernormalization59_out1);
let sigmoid40_out1 = burn::tensor::activation::sigmoid(linear94_out1.clone());
let mul88_out1 = linear94_out1.mul(sigmoid40_out1);
let linear95_out1 = self.linear95.forward(mul88_out1);
let mul89_out1 = linear95_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add81_out1 = add80_out1.add(mul89_out1);
let layernormalization60_out1 = {
let dtype = add81_out1.dtype();
self.layernormalization60
.forward(add81_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather21_out1 = {
let sliced = transpose1_out1.slice(s![10, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather22_out1 = {
let sliced = transpose2_out1.slice(s![10, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization61_out1 = {
let dtype = layernormalization60_out1.clone().dtype();
self.layernormalization61
.forward(
layernormalization60_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear96_out1 = self.linear96.forward(layernormalization61_out1);
let sigmoid41_out1 = burn::tensor::activation::sigmoid(linear96_out1.clone());
let mul90_out1 = linear96_out1.mul(sigmoid41_out1);
let linear97_out1 = self.linear97.forward(mul90_out1);
let mul91_out1 = linear97_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add82_out1 = layernormalization60_out1.add(mul91_out1);
let layernormalization62_out1 = {
let dtype = add82_out1.clone().dtype();
self.layernormalization62
.forward(add82_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat46_out1 = burn::tensor::Tensor::cat(
[gather21_out1.clone(), layernormalization62_out1.clone()].into(),
1,
);
let transpose152_out1 = gather21_out1.permute([1, 0, 2]);
let slice47_out1 = transpose152_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose153_out1 = slice47_out1.permute([1, 0, 2]);
let concat47_out1 = burn::tensor::Tensor::cat(
[transpose153_out1, layernormalization62_out1.clone()].into(),
1,
);
let linear98_out1 = self.linear98.forward(layernormalization62_out1);
let reshape72_out1 = linear98_out1.reshape([1, -1, 8, 128]);
let linear99_out1 = self.linear99.forward(concat46_out1.clone());
let reshape73_out1 = linear99_out1.reshape([1, -1, 8, 128]);
let linear100_out1 = self.linear100.forward(concat46_out1);
let reshape74_out1 = linear100_out1.reshape([1, -1, 8, 128]);
let transpose154_out1 = reshape73_out1.permute([0, 2, 1, 3]);
let transpose155_out1 = reshape74_out1.permute([0, 2, 1, 3]);
let linear101_out1 = self.linear101.forward(transpose6_out1);
let reshape75_out1 = linear101_out1.reshape([1, -1, 8, 128]);
let constant193_out1 = self.constant193.val();
let add83_out1 = reshape72_out1
.clone()
.add((constant193_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose156_out1 = add83_out1.permute([0, 2, 1, 3]);
let constant194_out1 = self.constant194.val();
let add84_out1 = reshape72_out1
.add((constant194_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose157_out1 = add84_out1.permute([0, 2, 1, 3]);
let transpose158_out1 = reshape75_out1.permute([0, 2, 3, 1]);
let matmul132_out1 = transpose157_out1.matmul(transpose158_out1);
let pad21_out1 = matmul132_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape76_out1 = pad21_out1.reshape(concat16_out1);
let slice48_out1 = reshape76_out1.slice(s![.., .., 1.., ..]);
let reshape77_out1 = slice48_out1.reshape(concat17_out1);
let transpose159_out1 = reshape77_out1.permute([3, 0, 1, 2]);
let slice49_out1 = transpose159_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose160_out1 = slice49_out1.permute([1, 2, 3, 0]);
let mul92_out1 = transpose160_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where31_out1 = mul92_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention11_out1,) = {
let q = transpose156_out1;
let k = transpose154_out1;
let v = transpose155_out1;
let score_bias = where31_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention11_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention11_out1 = {
let dims = attention11_out1.dims();
attention11_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention11_out1,)
};
let where32_out1 = attention11_out1.mask_fill(expand15_out1, constant453_out1);
let transpose161_out1 = where32_out1.permute([0, 2, 1, 3]);
let reshape78_out1 = transpose161_out1.reshape([1, -1, 1024]);
let linear102_out1 = self.linear102.forward(reshape78_out1);
let add85_out1 = add82_out1.add(linear102_out1);
(add85_out1, gather22_out1, concat47_out1, slice46_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule14 {
layernormalization63: LayerNorm,
squeeze22: burn::module::Param<Tensor<2>>,
conv1d11: Conv1d,
layernormalization64: LayerNorm,
squeeze23: burn::module::Param<Tensor<2>>,
layernormalization65: LayerNorm,
linear103: Linear,
linear104: Linear,
layernormalization66: LayerNorm,
layernormalization67: LayerNorm,
linear105: Linear,
linear106: Linear,
layernormalization68: LayerNorm,
linear107: Linear,
linear108: Linear,
linear109: Linear,
linear110: Linear,
constant210: burn::module::Param<Tensor<2>>,
constant211: burn::module::Param<Tensor<2>>,
linear111: Linear,
#[module(skip)]
device: Device,
}
impl Submodule14 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization63 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze22: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d11 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization64 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze23: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization65 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear103 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear104 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization66 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization67 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear105 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear106 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization68 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear107 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear108 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear109 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear110 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant210: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant211: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear111 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization63,
squeeze22,
conv1d11,
layernormalization64,
squeeze23,
layernormalization65,
linear103,
linear104,
layernormalization66,
layernormalization67,
linear105,
linear106,
layernormalization68,
linear107,
linear108,
linear109,
linear110,
constant210,
constant211,
linear111,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add85_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather22_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization63_out1 = {
let dtype = add85_out1.clone().dtype();
self.layernormalization63
.forward(add85_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze22_out1 = self.squeeze22.val();
let transpose162_out1 = squeeze22_out1.permute([1, 0]);
let matmul134_out1 = layernormalization63_out1
.matmul(transpose162_out1.unsqueeze::<3usize>());
let split_tensors = matmul134_out1.split_with_sizes([1024, 1024].into(), 2);
let [split11_out1, split11_out2] = split_tensors.try_into().unwrap();
let sigmoid42_out1 = burn::tensor::activation::sigmoid(split11_out2);
let mul93_out1 = split11_out1.mul(sigmoid42_out1);
let transpose163_out1 = mul93_out1.permute([0, 2, 1]);
let where33_out1 = transpose163_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad22_out1 = where33_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat48_out1 = burn::tensor::Tensor::cat(
[gather22_out1, pad22_out1].into(),
2,
);
let slice50_out1 = concat48_out1.clone().slice(s![.., .., - 8..]);
let conv1d11_out1 = self.conv1d11.forward(concat48_out1);
let transpose164_out1 = conv1d11_out1.permute([0, 2, 1]);
let layernormalization64_out1 = {
let dtype = transpose164_out1.dtype();
self.layernormalization64
.forward(transpose164_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid43_out1 = burn::tensor::activation::sigmoid(
layernormalization64_out1.clone(),
);
let mul94_out1 = layernormalization64_out1.mul(sigmoid43_out1);
let squeeze23_out1 = self.squeeze23.val();
let transpose165_out1 = squeeze23_out1.permute([1, 0]);
let matmul135_out1 = mul94_out1.matmul(transpose165_out1.unsqueeze::<3usize>());
let add86_out1 = add85_out1.add(matmul135_out1);
let layernormalization65_out1 = {
let dtype = add86_out1.clone().dtype();
self.layernormalization65
.forward(add86_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear103_out1 = self.linear103.forward(layernormalization65_out1);
let sigmoid44_out1 = burn::tensor::activation::sigmoid(linear103_out1.clone());
let mul95_out1 = linear103_out1.mul(sigmoid44_out1);
let linear104_out1 = self.linear104.forward(mul95_out1);
let mul96_out1 = linear104_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add87_out1 = add86_out1.add(mul96_out1);
let layernormalization66_out1 = {
let dtype = add87_out1.dtype();
self.layernormalization66
.forward(add87_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather23_out1 = {
let sliced = transpose1_out1.slice(s![11, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather24_out1 = {
let sliced = transpose2_out1.slice(s![11, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization67_out1 = {
let dtype = layernormalization66_out1.clone().dtype();
self.layernormalization67
.forward(
layernormalization66_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear105_out1 = self.linear105.forward(layernormalization67_out1);
let sigmoid45_out1 = burn::tensor::activation::sigmoid(linear105_out1.clone());
let mul97_out1 = linear105_out1.mul(sigmoid45_out1);
let linear106_out1 = self.linear106.forward(mul97_out1);
let mul98_out1 = linear106_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add88_out1 = layernormalization66_out1.add(mul98_out1);
let layernormalization68_out1 = {
let dtype = add88_out1.clone().dtype();
self.layernormalization68
.forward(add88_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat49_out1 = burn::tensor::Tensor::cat(
[gather23_out1.clone(), layernormalization68_out1.clone()].into(),
1,
);
let transpose166_out1 = gather23_out1.permute([1, 0, 2]);
let slice51_out1 = transpose166_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose167_out1 = slice51_out1.permute([1, 0, 2]);
let concat50_out1 = burn::tensor::Tensor::cat(
[transpose167_out1, layernormalization68_out1.clone()].into(),
1,
);
let linear107_out1 = self.linear107.forward(layernormalization68_out1);
let reshape79_out1 = linear107_out1.reshape([1, -1, 8, 128]);
let linear108_out1 = self.linear108.forward(concat49_out1.clone());
let reshape80_out1 = linear108_out1.reshape([1, -1, 8, 128]);
let linear109_out1 = self.linear109.forward(concat49_out1);
let reshape81_out1 = linear109_out1.reshape([1, -1, 8, 128]);
let transpose168_out1 = reshape80_out1.permute([0, 2, 1, 3]);
let transpose169_out1 = reshape81_out1.permute([0, 2, 1, 3]);
let linear110_out1 = self.linear110.forward(transpose6_out1);
let reshape82_out1 = linear110_out1.reshape([1, -1, 8, 128]);
let constant210_out1 = self.constant210.val();
let add89_out1 = reshape79_out1
.clone()
.add((constant210_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose170_out1 = add89_out1.permute([0, 2, 1, 3]);
let constant211_out1 = self.constant211.val();
let add90_out1 = reshape79_out1
.add((constant211_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose171_out1 = add90_out1.permute([0, 2, 1, 3]);
let transpose172_out1 = reshape82_out1.permute([0, 2, 3, 1]);
let matmul144_out1 = transpose171_out1.matmul(transpose172_out1);
let pad23_out1 = matmul144_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape83_out1 = pad23_out1.reshape(concat16_out1);
let slice52_out1 = reshape83_out1.slice(s![.., .., 1.., ..]);
let reshape84_out1 = slice52_out1.reshape(concat17_out1);
let transpose173_out1 = reshape84_out1.permute([3, 0, 1, 2]);
let slice53_out1 = transpose173_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose174_out1 = slice53_out1.permute([1, 2, 3, 0]);
let mul99_out1 = transpose174_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where34_out1 = mul99_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention12_out1,) = {
let q = transpose170_out1;
let k = transpose168_out1;
let v = transpose169_out1;
let score_bias = where34_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention12_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention12_out1 = {
let dims = attention12_out1.dims();
attention12_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention12_out1,)
};
let where35_out1 = attention12_out1.mask_fill(expand15_out1, constant453_out1);
let transpose175_out1 = where35_out1.permute([0, 2, 1, 3]);
let reshape85_out1 = transpose175_out1.reshape([1, -1, 1024]);
let linear111_out1 = self.linear111.forward(reshape85_out1);
let add91_out1 = add88_out1.add(linear111_out1);
(add91_out1, gather24_out1, concat50_out1, slice50_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule15 {
layernormalization69: LayerNorm,
squeeze24: burn::module::Param<Tensor<2>>,
conv1d12: Conv1d,
layernormalization70: LayerNorm,
squeeze25: burn::module::Param<Tensor<2>>,
layernormalization71: LayerNorm,
linear112: Linear,
linear113: Linear,
layernormalization72: LayerNorm,
layernormalization73: LayerNorm,
linear114: Linear,
linear115: Linear,
layernormalization74: LayerNorm,
linear116: Linear,
linear117: Linear,
linear118: Linear,
linear119: Linear,
constant227: burn::module::Param<Tensor<2>>,
constant228: burn::module::Param<Tensor<2>>,
linear120: Linear,
#[module(skip)]
device: Device,
}
impl Submodule15 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization69 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze24: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d12 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization70 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze25: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization71 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear112 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear113 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization72 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization73 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear114 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear115 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization74 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear116 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear117 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear118 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear119 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant227: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant228: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear120 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization69,
squeeze24,
conv1d12,
layernormalization70,
squeeze25,
layernormalization71,
linear112,
linear113,
layernormalization72,
layernormalization73,
linear114,
linear115,
layernormalization74,
linear116,
linear117,
linear118,
linear119,
constant227,
constant228,
linear120,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add91_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather24_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization69_out1 = {
let dtype = add91_out1.clone().dtype();
self.layernormalization69
.forward(add91_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze24_out1 = self.squeeze24.val();
let transpose176_out1 = squeeze24_out1.permute([1, 0]);
let matmul146_out1 = layernormalization69_out1
.matmul(transpose176_out1.unsqueeze::<3usize>());
let split_tensors = matmul146_out1.split_with_sizes([1024, 1024].into(), 2);
let [split12_out1, split12_out2] = split_tensors.try_into().unwrap();
let sigmoid46_out1 = burn::tensor::activation::sigmoid(split12_out2);
let mul100_out1 = split12_out1.mul(sigmoid46_out1);
let transpose177_out1 = mul100_out1.permute([0, 2, 1]);
let where36_out1 = transpose177_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad24_out1 = where36_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat51_out1 = burn::tensor::Tensor::cat(
[gather24_out1, pad24_out1].into(),
2,
);
let slice54_out1 = concat51_out1.clone().slice(s![.., .., - 8..]);
let conv1d12_out1 = self.conv1d12.forward(concat51_out1);
let transpose178_out1 = conv1d12_out1.permute([0, 2, 1]);
let layernormalization70_out1 = {
let dtype = transpose178_out1.dtype();
self.layernormalization70
.forward(transpose178_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid47_out1 = burn::tensor::activation::sigmoid(
layernormalization70_out1.clone(),
);
let mul101_out1 = layernormalization70_out1.mul(sigmoid47_out1);
let squeeze25_out1 = self.squeeze25.val();
let transpose179_out1 = squeeze25_out1.permute([1, 0]);
let matmul147_out1 = mul101_out1.matmul(transpose179_out1.unsqueeze::<3usize>());
let add92_out1 = add91_out1.add(matmul147_out1);
let layernormalization71_out1 = {
let dtype = add92_out1.clone().dtype();
self.layernormalization71
.forward(add92_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear112_out1 = self.linear112.forward(layernormalization71_out1);
let sigmoid48_out1 = burn::tensor::activation::sigmoid(linear112_out1.clone());
let mul102_out1 = linear112_out1.mul(sigmoid48_out1);
let linear113_out1 = self.linear113.forward(mul102_out1);
let mul103_out1 = linear113_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add93_out1 = add92_out1.add(mul103_out1);
let layernormalization72_out1 = {
let dtype = add93_out1.dtype();
self.layernormalization72
.forward(add93_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather25_out1 = {
let sliced = transpose1_out1.slice(s![12, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather26_out1 = {
let sliced = transpose2_out1.slice(s![12, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization73_out1 = {
let dtype = layernormalization72_out1.clone().dtype();
self.layernormalization73
.forward(
layernormalization72_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear114_out1 = self.linear114.forward(layernormalization73_out1);
let sigmoid49_out1 = burn::tensor::activation::sigmoid(linear114_out1.clone());
let mul104_out1 = linear114_out1.mul(sigmoid49_out1);
let linear115_out1 = self.linear115.forward(mul104_out1);
let mul105_out1 = linear115_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add94_out1 = layernormalization72_out1.add(mul105_out1);
let layernormalization74_out1 = {
let dtype = add94_out1.clone().dtype();
self.layernormalization74
.forward(add94_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat52_out1 = burn::tensor::Tensor::cat(
[gather25_out1.clone(), layernormalization74_out1.clone()].into(),
1,
);
let transpose180_out1 = gather25_out1.permute([1, 0, 2]);
let slice55_out1 = transpose180_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose181_out1 = slice55_out1.permute([1, 0, 2]);
let concat53_out1 = burn::tensor::Tensor::cat(
[transpose181_out1, layernormalization74_out1.clone()].into(),
1,
);
let linear116_out1 = self.linear116.forward(layernormalization74_out1);
let reshape86_out1 = linear116_out1.reshape([1, -1, 8, 128]);
let linear117_out1 = self.linear117.forward(concat52_out1.clone());
let reshape87_out1 = linear117_out1.reshape([1, -1, 8, 128]);
let linear118_out1 = self.linear118.forward(concat52_out1);
let reshape88_out1 = linear118_out1.reshape([1, -1, 8, 128]);
let transpose182_out1 = reshape87_out1.permute([0, 2, 1, 3]);
let transpose183_out1 = reshape88_out1.permute([0, 2, 1, 3]);
let linear119_out1 = self.linear119.forward(transpose6_out1);
let reshape89_out1 = linear119_out1.reshape([1, -1, 8, 128]);
let constant227_out1 = self.constant227.val();
let add95_out1 = reshape86_out1
.clone()
.add((constant227_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose184_out1 = add95_out1.permute([0, 2, 1, 3]);
let constant228_out1 = self.constant228.val();
let add96_out1 = reshape86_out1
.add((constant228_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose185_out1 = add96_out1.permute([0, 2, 1, 3]);
let transpose186_out1 = reshape89_out1.permute([0, 2, 3, 1]);
let matmul156_out1 = transpose185_out1.matmul(transpose186_out1);
let pad25_out1 = matmul156_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape90_out1 = pad25_out1.reshape(concat16_out1);
let slice56_out1 = reshape90_out1.slice(s![.., .., 1.., ..]);
let reshape91_out1 = slice56_out1.reshape(concat17_out1);
let transpose187_out1 = reshape91_out1.permute([3, 0, 1, 2]);
let slice57_out1 = transpose187_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose188_out1 = slice57_out1.permute([1, 2, 3, 0]);
let mul106_out1 = transpose188_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where37_out1 = mul106_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention13_out1,) = {
let q = transpose184_out1;
let k = transpose182_out1;
let v = transpose183_out1;
let score_bias = where37_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention13_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention13_out1 = {
let dims = attention13_out1.dims();
attention13_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention13_out1,)
};
let where38_out1 = attention13_out1.mask_fill(expand15_out1, constant453_out1);
let transpose189_out1 = where38_out1.permute([0, 2, 1, 3]);
let reshape92_out1 = transpose189_out1.reshape([1, -1, 1024]);
let linear120_out1 = self.linear120.forward(reshape92_out1);
let add97_out1 = add94_out1.add(linear120_out1);
(add97_out1, gather26_out1, concat53_out1, slice54_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule16 {
layernormalization75: LayerNorm,
squeeze26: burn::module::Param<Tensor<2>>,
conv1d13: Conv1d,
layernormalization76: LayerNorm,
squeeze27: burn::module::Param<Tensor<2>>,
layernormalization77: LayerNorm,
linear121: Linear,
linear122: Linear,
layernormalization78: LayerNorm,
layernormalization79: LayerNorm,
linear123: Linear,
linear124: Linear,
layernormalization80: LayerNorm,
linear125: Linear,
linear126: Linear,
linear127: Linear,
linear128: Linear,
constant244: burn::module::Param<Tensor<2>>,
constant245: burn::module::Param<Tensor<2>>,
linear129: Linear,
#[module(skip)]
device: Device,
}
impl Submodule16 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization75 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze26: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d13 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization76 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze27: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization77 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear121 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear122 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization78 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization79 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear123 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear124 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization80 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear125 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear126 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear127 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear128 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant244: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant245: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear129 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization75,
squeeze26,
conv1d13,
layernormalization76,
squeeze27,
layernormalization77,
linear121,
linear122,
layernormalization78,
layernormalization79,
linear123,
linear124,
layernormalization80,
linear125,
linear126,
linear127,
linear128,
constant244,
constant245,
linear129,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add97_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather26_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization75_out1 = {
let dtype = add97_out1.clone().dtype();
self.layernormalization75
.forward(add97_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze26_out1 = self.squeeze26.val();
let transpose190_out1 = squeeze26_out1.permute([1, 0]);
let matmul158_out1 = layernormalization75_out1
.matmul(transpose190_out1.unsqueeze::<3usize>());
let split_tensors = matmul158_out1.split_with_sizes([1024, 1024].into(), 2);
let [split13_out1, split13_out2] = split_tensors.try_into().unwrap();
let sigmoid50_out1 = burn::tensor::activation::sigmoid(split13_out2);
let mul107_out1 = split13_out1.mul(sigmoid50_out1);
let transpose191_out1 = mul107_out1.permute([0, 2, 1]);
let where39_out1 = transpose191_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad26_out1 = where39_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat54_out1 = burn::tensor::Tensor::cat(
[gather26_out1, pad26_out1].into(),
2,
);
let slice58_out1 = concat54_out1.clone().slice(s![.., .., - 8..]);
let conv1d13_out1 = self.conv1d13.forward(concat54_out1);
let transpose192_out1 = conv1d13_out1.permute([0, 2, 1]);
let layernormalization76_out1 = {
let dtype = transpose192_out1.dtype();
self.layernormalization76
.forward(transpose192_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid51_out1 = burn::tensor::activation::sigmoid(
layernormalization76_out1.clone(),
);
let mul108_out1 = layernormalization76_out1.mul(sigmoid51_out1);
let squeeze27_out1 = self.squeeze27.val();
let transpose193_out1 = squeeze27_out1.permute([1, 0]);
let matmul159_out1 = mul108_out1.matmul(transpose193_out1.unsqueeze::<3usize>());
let add98_out1 = add97_out1.add(matmul159_out1);
let layernormalization77_out1 = {
let dtype = add98_out1.clone().dtype();
self.layernormalization77
.forward(add98_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear121_out1 = self.linear121.forward(layernormalization77_out1);
let sigmoid52_out1 = burn::tensor::activation::sigmoid(linear121_out1.clone());
let mul109_out1 = linear121_out1.mul(sigmoid52_out1);
let linear122_out1 = self.linear122.forward(mul109_out1);
let mul110_out1 = linear122_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add99_out1 = add98_out1.add(mul110_out1);
let layernormalization78_out1 = {
let dtype = add99_out1.dtype();
self.layernormalization78
.forward(add99_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather27_out1 = {
let sliced = transpose1_out1.slice(s![13, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather28_out1 = {
let sliced = transpose2_out1.slice(s![13, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization79_out1 = {
let dtype = layernormalization78_out1.clone().dtype();
self.layernormalization79
.forward(
layernormalization78_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear123_out1 = self.linear123.forward(layernormalization79_out1);
let sigmoid53_out1 = burn::tensor::activation::sigmoid(linear123_out1.clone());
let mul111_out1 = linear123_out1.mul(sigmoid53_out1);
let linear124_out1 = self.linear124.forward(mul111_out1);
let mul112_out1 = linear124_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add100_out1 = layernormalization78_out1.add(mul112_out1);
let layernormalization80_out1 = {
let dtype = add100_out1.clone().dtype();
self.layernormalization80
.forward(add100_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat55_out1 = burn::tensor::Tensor::cat(
[gather27_out1.clone(), layernormalization80_out1.clone()].into(),
1,
);
let transpose194_out1 = gather27_out1.permute([1, 0, 2]);
let slice59_out1 = transpose194_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose195_out1 = slice59_out1.permute([1, 0, 2]);
let concat56_out1 = burn::tensor::Tensor::cat(
[transpose195_out1, layernormalization80_out1.clone()].into(),
1,
);
let linear125_out1 = self.linear125.forward(layernormalization80_out1);
let reshape93_out1 = linear125_out1.reshape([1, -1, 8, 128]);
let linear126_out1 = self.linear126.forward(concat55_out1.clone());
let reshape94_out1 = linear126_out1.reshape([1, -1, 8, 128]);
let linear127_out1 = self.linear127.forward(concat55_out1);
let reshape95_out1 = linear127_out1.reshape([1, -1, 8, 128]);
let transpose196_out1 = reshape94_out1.permute([0, 2, 1, 3]);
let transpose197_out1 = reshape95_out1.permute([0, 2, 1, 3]);
let linear128_out1 = self.linear128.forward(transpose6_out1);
let reshape96_out1 = linear128_out1.reshape([1, -1, 8, 128]);
let constant244_out1 = self.constant244.val();
let add101_out1 = reshape93_out1
.clone()
.add((constant244_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose198_out1 = add101_out1.permute([0, 2, 1, 3]);
let constant245_out1 = self.constant245.val();
let add102_out1 = reshape93_out1
.add((constant245_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose199_out1 = add102_out1.permute([0, 2, 1, 3]);
let transpose200_out1 = reshape96_out1.permute([0, 2, 3, 1]);
let matmul168_out1 = transpose199_out1.matmul(transpose200_out1);
let pad27_out1 = matmul168_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape97_out1 = pad27_out1.reshape(concat16_out1);
let slice60_out1 = reshape97_out1.slice(s![.., .., 1.., ..]);
let reshape98_out1 = slice60_out1.reshape(concat17_out1);
let transpose201_out1 = reshape98_out1.permute([3, 0, 1, 2]);
let slice61_out1 = transpose201_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose202_out1 = slice61_out1.permute([1, 2, 3, 0]);
let mul113_out1 = transpose202_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where40_out1 = mul113_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention14_out1,) = {
let q = transpose198_out1;
let k = transpose196_out1;
let v = transpose197_out1;
let score_bias = where40_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention14_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention14_out1 = {
let dims = attention14_out1.dims();
attention14_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention14_out1,)
};
let where41_out1 = attention14_out1.mask_fill(expand15_out1, constant453_out1);
let transpose203_out1 = where41_out1.permute([0, 2, 1, 3]);
let reshape99_out1 = transpose203_out1.reshape([1, -1, 1024]);
let linear129_out1 = self.linear129.forward(reshape99_out1);
let add103_out1 = add100_out1.add(linear129_out1);
(add103_out1, gather28_out1, concat56_out1, slice58_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule17 {
layernormalization81: LayerNorm,
squeeze28: burn::module::Param<Tensor<2>>,
conv1d14: Conv1d,
layernormalization82: LayerNorm,
squeeze29: burn::module::Param<Tensor<2>>,
layernormalization83: LayerNorm,
linear130: Linear,
linear131: Linear,
layernormalization84: LayerNorm,
layernormalization85: LayerNorm,
linear132: Linear,
linear133: Linear,
layernormalization86: LayerNorm,
linear134: Linear,
linear135: Linear,
linear136: Linear,
linear137: Linear,
constant261: burn::module::Param<Tensor<2>>,
constant262: burn::module::Param<Tensor<2>>,
linear138: Linear,
#[module(skip)]
device: Device,
}
impl Submodule17 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization81 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze28: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d14 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization82 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze29: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization83 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear130 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear131 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization84 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization85 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear132 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear133 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization86 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear134 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear135 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear136 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear137 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant261: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant262: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear138 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization81,
squeeze28,
conv1d14,
layernormalization82,
squeeze29,
layernormalization83,
linear130,
linear131,
layernormalization84,
layernormalization85,
linear132,
linear133,
layernormalization86,
linear134,
linear135,
linear136,
linear137,
constant261,
constant262,
linear138,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add103_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather28_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization81_out1 = {
let dtype = add103_out1.clone().dtype();
self.layernormalization81
.forward(add103_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze28_out1 = self.squeeze28.val();
let transpose204_out1 = squeeze28_out1.permute([1, 0]);
let matmul170_out1 = layernormalization81_out1
.matmul(transpose204_out1.unsqueeze::<3usize>());
let split_tensors = matmul170_out1.split_with_sizes([1024, 1024].into(), 2);
let [split14_out1, split14_out2] = split_tensors.try_into().unwrap();
let sigmoid54_out1 = burn::tensor::activation::sigmoid(split14_out2);
let mul114_out1 = split14_out1.mul(sigmoid54_out1);
let transpose205_out1 = mul114_out1.permute([0, 2, 1]);
let where42_out1 = transpose205_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad28_out1 = where42_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat57_out1 = burn::tensor::Tensor::cat(
[gather28_out1, pad28_out1].into(),
2,
);
let slice62_out1 = concat57_out1.clone().slice(s![.., .., - 8..]);
let conv1d14_out1 = self.conv1d14.forward(concat57_out1);
let transpose206_out1 = conv1d14_out1.permute([0, 2, 1]);
let layernormalization82_out1 = {
let dtype = transpose206_out1.dtype();
self.layernormalization82
.forward(transpose206_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid55_out1 = burn::tensor::activation::sigmoid(
layernormalization82_out1.clone(),
);
let mul115_out1 = layernormalization82_out1.mul(sigmoid55_out1);
let squeeze29_out1 = self.squeeze29.val();
let transpose207_out1 = squeeze29_out1.permute([1, 0]);
let matmul171_out1 = mul115_out1.matmul(transpose207_out1.unsqueeze::<3usize>());
let add104_out1 = add103_out1.add(matmul171_out1);
let layernormalization83_out1 = {
let dtype = add104_out1.clone().dtype();
self.layernormalization83
.forward(add104_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear130_out1 = self.linear130.forward(layernormalization83_out1);
let sigmoid56_out1 = burn::tensor::activation::sigmoid(linear130_out1.clone());
let mul116_out1 = linear130_out1.mul(sigmoid56_out1);
let linear131_out1 = self.linear131.forward(mul116_out1);
let mul117_out1 = linear131_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add105_out1 = add104_out1.add(mul117_out1);
let layernormalization84_out1 = {
let dtype = add105_out1.dtype();
self.layernormalization84
.forward(add105_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather29_out1 = {
let sliced = transpose1_out1.slice(s![14, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather30_out1 = {
let sliced = transpose2_out1.slice(s![14, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization85_out1 = {
let dtype = layernormalization84_out1.clone().dtype();
self.layernormalization85
.forward(
layernormalization84_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear132_out1 = self.linear132.forward(layernormalization85_out1);
let sigmoid57_out1 = burn::tensor::activation::sigmoid(linear132_out1.clone());
let mul118_out1 = linear132_out1.mul(sigmoid57_out1);
let linear133_out1 = self.linear133.forward(mul118_out1);
let mul119_out1 = linear133_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add106_out1 = layernormalization84_out1.add(mul119_out1);
let layernormalization86_out1 = {
let dtype = add106_out1.clone().dtype();
self.layernormalization86
.forward(add106_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat58_out1 = burn::tensor::Tensor::cat(
[gather29_out1.clone(), layernormalization86_out1.clone()].into(),
1,
);
let transpose208_out1 = gather29_out1.permute([1, 0, 2]);
let slice63_out1 = transpose208_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose209_out1 = slice63_out1.permute([1, 0, 2]);
let concat59_out1 = burn::tensor::Tensor::cat(
[transpose209_out1, layernormalization86_out1.clone()].into(),
1,
);
let linear134_out1 = self.linear134.forward(layernormalization86_out1);
let reshape100_out1 = linear134_out1.reshape([1, -1, 8, 128]);
let linear135_out1 = self.linear135.forward(concat58_out1.clone());
let reshape101_out1 = linear135_out1.reshape([1, -1, 8, 128]);
let linear136_out1 = self.linear136.forward(concat58_out1);
let reshape102_out1 = linear136_out1.reshape([1, -1, 8, 128]);
let transpose210_out1 = reshape101_out1.permute([0, 2, 1, 3]);
let transpose211_out1 = reshape102_out1.permute([0, 2, 1, 3]);
let linear137_out1 = self.linear137.forward(transpose6_out1);
let reshape103_out1 = linear137_out1.reshape([1, -1, 8, 128]);
let constant261_out1 = self.constant261.val();
let add107_out1 = reshape100_out1
.clone()
.add((constant261_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose212_out1 = add107_out1.permute([0, 2, 1, 3]);
let constant262_out1 = self.constant262.val();
let add108_out1 = reshape100_out1
.add((constant262_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose213_out1 = add108_out1.permute([0, 2, 1, 3]);
let transpose214_out1 = reshape103_out1.permute([0, 2, 3, 1]);
let matmul180_out1 = transpose213_out1.matmul(transpose214_out1);
let pad29_out1 = matmul180_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape104_out1 = pad29_out1.reshape(concat16_out1);
let slice64_out1 = reshape104_out1.slice(s![.., .., 1.., ..]);
let reshape105_out1 = slice64_out1.reshape(concat17_out1);
let transpose215_out1 = reshape105_out1.permute([3, 0, 1, 2]);
let slice65_out1 = transpose215_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose216_out1 = slice65_out1.permute([1, 2, 3, 0]);
let mul120_out1 = transpose216_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where43_out1 = mul120_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention15_out1,) = {
let q = transpose212_out1;
let k = transpose210_out1;
let v = transpose211_out1;
let score_bias = where43_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention15_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention15_out1 = {
let dims = attention15_out1.dims();
attention15_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention15_out1,)
};
let where44_out1 = attention15_out1.mask_fill(expand15_out1, constant453_out1);
let transpose217_out1 = where44_out1.permute([0, 2, 1, 3]);
let reshape106_out1 = transpose217_out1.reshape([1, -1, 1024]);
let linear138_out1 = self.linear138.forward(reshape106_out1);
let add109_out1 = add106_out1.add(linear138_out1);
(add109_out1, gather30_out1, concat59_out1, slice62_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule18 {
layernormalization87: LayerNorm,
squeeze30: burn::module::Param<Tensor<2>>,
conv1d15: Conv1d,
layernormalization88: LayerNorm,
squeeze31: burn::module::Param<Tensor<2>>,
layernormalization89: LayerNorm,
linear139: Linear,
linear140: Linear,
layernormalization90: LayerNorm,
layernormalization91: LayerNorm,
linear141: Linear,
linear142: Linear,
layernormalization92: LayerNorm,
linear143: Linear,
linear144: Linear,
linear145: Linear,
linear146: Linear,
constant278: burn::module::Param<Tensor<2>>,
constant279: burn::module::Param<Tensor<2>>,
linear147: Linear,
#[module(skip)]
device: Device,
}
impl Submodule18 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization87 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze30: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d15 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization88 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze31: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization89 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear139 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear140 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization90 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization91 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear141 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear142 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization92 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear143 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear144 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear145 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear146 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant278: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant279: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear147 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization87,
squeeze30,
conv1d15,
layernormalization88,
squeeze31,
layernormalization89,
linear139,
linear140,
layernormalization90,
layernormalization91,
linear141,
linear142,
layernormalization92,
linear143,
linear144,
linear145,
linear146,
constant278,
constant279,
linear147,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add109_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather30_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization87_out1 = {
let dtype = add109_out1.clone().dtype();
self.layernormalization87
.forward(add109_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze30_out1 = self.squeeze30.val();
let transpose218_out1 = squeeze30_out1.permute([1, 0]);
let matmul182_out1 = layernormalization87_out1
.matmul(transpose218_out1.unsqueeze::<3usize>());
let split_tensors = matmul182_out1.split_with_sizes([1024, 1024].into(), 2);
let [split15_out1, split15_out2] = split_tensors.try_into().unwrap();
let sigmoid58_out1 = burn::tensor::activation::sigmoid(split15_out2);
let mul121_out1 = split15_out1.mul(sigmoid58_out1);
let transpose219_out1 = mul121_out1.permute([0, 2, 1]);
let where45_out1 = transpose219_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad30_out1 = where45_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat60_out1 = burn::tensor::Tensor::cat(
[gather30_out1, pad30_out1].into(),
2,
);
let slice66_out1 = concat60_out1.clone().slice(s![.., .., - 8..]);
let conv1d15_out1 = self.conv1d15.forward(concat60_out1);
let transpose220_out1 = conv1d15_out1.permute([0, 2, 1]);
let layernormalization88_out1 = {
let dtype = transpose220_out1.dtype();
self.layernormalization88
.forward(transpose220_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid59_out1 = burn::tensor::activation::sigmoid(
layernormalization88_out1.clone(),
);
let mul122_out1 = layernormalization88_out1.mul(sigmoid59_out1);
let squeeze31_out1 = self.squeeze31.val();
let transpose221_out1 = squeeze31_out1.permute([1, 0]);
let matmul183_out1 = mul122_out1.matmul(transpose221_out1.unsqueeze::<3usize>());
let add110_out1 = add109_out1.add(matmul183_out1);
let layernormalization89_out1 = {
let dtype = add110_out1.clone().dtype();
self.layernormalization89
.forward(add110_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear139_out1 = self.linear139.forward(layernormalization89_out1);
let sigmoid60_out1 = burn::tensor::activation::sigmoid(linear139_out1.clone());
let mul123_out1 = linear139_out1.mul(sigmoid60_out1);
let linear140_out1 = self.linear140.forward(mul123_out1);
let mul124_out1 = linear140_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add111_out1 = add110_out1.add(mul124_out1);
let layernormalization90_out1 = {
let dtype = add111_out1.dtype();
self.layernormalization90
.forward(add111_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather31_out1 = {
let sliced = transpose1_out1.slice(s![15, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather32_out1 = {
let sliced = transpose2_out1.slice(s![15, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization91_out1 = {
let dtype = layernormalization90_out1.clone().dtype();
self.layernormalization91
.forward(
layernormalization90_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear141_out1 = self.linear141.forward(layernormalization91_out1);
let sigmoid61_out1 = burn::tensor::activation::sigmoid(linear141_out1.clone());
let mul125_out1 = linear141_out1.mul(sigmoid61_out1);
let linear142_out1 = self.linear142.forward(mul125_out1);
let mul126_out1 = linear142_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add112_out1 = layernormalization90_out1.add(mul126_out1);
let layernormalization92_out1 = {
let dtype = add112_out1.clone().dtype();
self.layernormalization92
.forward(add112_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat61_out1 = burn::tensor::Tensor::cat(
[gather31_out1.clone(), layernormalization92_out1.clone()].into(),
1,
);
let transpose222_out1 = gather31_out1.permute([1, 0, 2]);
let slice67_out1 = transpose222_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose223_out1 = slice67_out1.permute([1, 0, 2]);
let concat62_out1 = burn::tensor::Tensor::cat(
[transpose223_out1, layernormalization92_out1.clone()].into(),
1,
);
let linear143_out1 = self.linear143.forward(layernormalization92_out1);
let reshape107_out1 = linear143_out1.reshape([1, -1, 8, 128]);
let linear144_out1 = self.linear144.forward(concat61_out1.clone());
let reshape108_out1 = linear144_out1.reshape([1, -1, 8, 128]);
let linear145_out1 = self.linear145.forward(concat61_out1);
let reshape109_out1 = linear145_out1.reshape([1, -1, 8, 128]);
let transpose224_out1 = reshape108_out1.permute([0, 2, 1, 3]);
let transpose225_out1 = reshape109_out1.permute([0, 2, 1, 3]);
let linear146_out1 = self.linear146.forward(transpose6_out1);
let reshape110_out1 = linear146_out1.reshape([1, -1, 8, 128]);
let constant278_out1 = self.constant278.val();
let add113_out1 = reshape107_out1
.clone()
.add((constant278_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose226_out1 = add113_out1.permute([0, 2, 1, 3]);
let constant279_out1 = self.constant279.val();
let add114_out1 = reshape107_out1
.add((constant279_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose227_out1 = add114_out1.permute([0, 2, 1, 3]);
let transpose228_out1 = reshape110_out1.permute([0, 2, 3, 1]);
let matmul192_out1 = transpose227_out1.matmul(transpose228_out1);
let pad31_out1 = matmul192_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape111_out1 = pad31_out1.reshape(concat16_out1);
let slice68_out1 = reshape111_out1.slice(s![.., .., 1.., ..]);
let reshape112_out1 = slice68_out1.reshape(concat17_out1);
let transpose229_out1 = reshape112_out1.permute([3, 0, 1, 2]);
let slice69_out1 = transpose229_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose230_out1 = slice69_out1.permute([1, 2, 3, 0]);
let mul127_out1 = transpose230_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where46_out1 = mul127_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention16_out1,) = {
let q = transpose226_out1;
let k = transpose224_out1;
let v = transpose225_out1;
let score_bias = where46_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention16_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention16_out1 = {
let dims = attention16_out1.dims();
attention16_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention16_out1,)
};
let where47_out1 = attention16_out1.mask_fill(expand15_out1, constant453_out1);
let transpose231_out1 = where47_out1.permute([0, 2, 1, 3]);
let reshape113_out1 = transpose231_out1.reshape([1, -1, 1024]);
let linear147_out1 = self.linear147.forward(reshape113_out1);
let add115_out1 = add112_out1.add(linear147_out1);
(add115_out1, gather32_out1, concat62_out1, slice66_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule19 {
layernormalization93: LayerNorm,
squeeze32: burn::module::Param<Tensor<2>>,
conv1d16: Conv1d,
layernormalization94: LayerNorm,
squeeze33: burn::module::Param<Tensor<2>>,
layernormalization95: LayerNorm,
linear148: Linear,
linear149: Linear,
layernormalization96: LayerNorm,
layernormalization97: LayerNorm,
linear150: Linear,
linear151: Linear,
layernormalization98: LayerNorm,
linear152: Linear,
linear153: Linear,
linear154: Linear,
linear155: Linear,
constant295: burn::module::Param<Tensor<2>>,
constant296: burn::module::Param<Tensor<2>>,
linear156: Linear,
#[module(skip)]
device: Device,
}
impl Submodule19 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization93 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze32: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d16 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization94 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze33: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization95 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear148 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear149 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization96 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization97 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear150 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear151 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization98 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear152 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear153 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear154 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear155 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant295: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant296: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear156 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization93,
squeeze32,
conv1d16,
layernormalization94,
squeeze33,
layernormalization95,
linear148,
linear149,
layernormalization96,
layernormalization97,
linear150,
linear151,
layernormalization98,
linear152,
linear153,
linear154,
linear155,
constant295,
constant296,
linear156,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add115_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather32_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization93_out1 = {
let dtype = add115_out1.clone().dtype();
self.layernormalization93
.forward(add115_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze32_out1 = self.squeeze32.val();
let transpose232_out1 = squeeze32_out1.permute([1, 0]);
let matmul194_out1 = layernormalization93_out1
.matmul(transpose232_out1.unsqueeze::<3usize>());
let split_tensors = matmul194_out1.split_with_sizes([1024, 1024].into(), 2);
let [split16_out1, split16_out2] = split_tensors.try_into().unwrap();
let sigmoid62_out1 = burn::tensor::activation::sigmoid(split16_out2);
let mul128_out1 = split16_out1.mul(sigmoid62_out1);
let transpose233_out1 = mul128_out1.permute([0, 2, 1]);
let where48_out1 = transpose233_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad32_out1 = where48_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat63_out1 = burn::tensor::Tensor::cat(
[gather32_out1, pad32_out1].into(),
2,
);
let slice70_out1 = concat63_out1.clone().slice(s![.., .., - 8..]);
let conv1d16_out1 = self.conv1d16.forward(concat63_out1);
let transpose234_out1 = conv1d16_out1.permute([0, 2, 1]);
let layernormalization94_out1 = {
let dtype = transpose234_out1.dtype();
self.layernormalization94
.forward(transpose234_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid63_out1 = burn::tensor::activation::sigmoid(
layernormalization94_out1.clone(),
);
let mul129_out1 = layernormalization94_out1.mul(sigmoid63_out1);
let squeeze33_out1 = self.squeeze33.val();
let transpose235_out1 = squeeze33_out1.permute([1, 0]);
let matmul195_out1 = mul129_out1.matmul(transpose235_out1.unsqueeze::<3usize>());
let add116_out1 = add115_out1.add(matmul195_out1);
let layernormalization95_out1 = {
let dtype = add116_out1.clone().dtype();
self.layernormalization95
.forward(add116_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear148_out1 = self.linear148.forward(layernormalization95_out1);
let sigmoid64_out1 = burn::tensor::activation::sigmoid(linear148_out1.clone());
let mul130_out1 = linear148_out1.mul(sigmoid64_out1);
let linear149_out1 = self.linear149.forward(mul130_out1);
let mul131_out1 = linear149_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add117_out1 = add116_out1.add(mul131_out1);
let layernormalization96_out1 = {
let dtype = add117_out1.dtype();
self.layernormalization96
.forward(add117_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather33_out1 = {
let sliced = transpose1_out1.slice(s![16, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather34_out1 = {
let sliced = transpose2_out1.slice(s![16, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization97_out1 = {
let dtype = layernormalization96_out1.clone().dtype();
self.layernormalization97
.forward(
layernormalization96_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear150_out1 = self.linear150.forward(layernormalization97_out1);
let sigmoid65_out1 = burn::tensor::activation::sigmoid(linear150_out1.clone());
let mul132_out1 = linear150_out1.mul(sigmoid65_out1);
let linear151_out1 = self.linear151.forward(mul132_out1);
let mul133_out1 = linear151_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add118_out1 = layernormalization96_out1.add(mul133_out1);
let layernormalization98_out1 = {
let dtype = add118_out1.clone().dtype();
self.layernormalization98
.forward(add118_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat64_out1 = burn::tensor::Tensor::cat(
[gather33_out1.clone(), layernormalization98_out1.clone()].into(),
1,
);
let transpose236_out1 = gather33_out1.permute([1, 0, 2]);
let slice71_out1 = transpose236_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose237_out1 = slice71_out1.permute([1, 0, 2]);
let concat65_out1 = burn::tensor::Tensor::cat(
[transpose237_out1, layernormalization98_out1.clone()].into(),
1,
);
let linear152_out1 = self.linear152.forward(layernormalization98_out1);
let reshape114_out1 = linear152_out1.reshape([1, -1, 8, 128]);
let linear153_out1 = self.linear153.forward(concat64_out1.clone());
let reshape115_out1 = linear153_out1.reshape([1, -1, 8, 128]);
let linear154_out1 = self.linear154.forward(concat64_out1);
let reshape116_out1 = linear154_out1.reshape([1, -1, 8, 128]);
let transpose238_out1 = reshape115_out1.permute([0, 2, 1, 3]);
let transpose239_out1 = reshape116_out1.permute([0, 2, 1, 3]);
let linear155_out1 = self.linear155.forward(transpose6_out1);
let reshape117_out1 = linear155_out1.reshape([1, -1, 8, 128]);
let constant295_out1 = self.constant295.val();
let add119_out1 = reshape114_out1
.clone()
.add((constant295_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose240_out1 = add119_out1.permute([0, 2, 1, 3]);
let constant296_out1 = self.constant296.val();
let add120_out1 = reshape114_out1
.add((constant296_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose241_out1 = add120_out1.permute([0, 2, 1, 3]);
let transpose242_out1 = reshape117_out1.permute([0, 2, 3, 1]);
let matmul204_out1 = transpose241_out1.matmul(transpose242_out1);
let pad33_out1 = matmul204_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape118_out1 = pad33_out1.reshape(concat16_out1);
let slice72_out1 = reshape118_out1.slice(s![.., .., 1.., ..]);
let reshape119_out1 = slice72_out1.reshape(concat17_out1);
let transpose243_out1 = reshape119_out1.permute([3, 0, 1, 2]);
let slice73_out1 = transpose243_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose244_out1 = slice73_out1.permute([1, 2, 3, 0]);
let mul134_out1 = transpose244_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where49_out1 = mul134_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention17_out1,) = {
let q = transpose240_out1;
let k = transpose238_out1;
let v = transpose239_out1;
let score_bias = where49_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention17_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention17_out1 = {
let dims = attention17_out1.dims();
attention17_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention17_out1,)
};
let where50_out1 = attention17_out1.mask_fill(expand15_out1, constant453_out1);
let transpose245_out1 = where50_out1.permute([0, 2, 1, 3]);
let reshape120_out1 = transpose245_out1.reshape([1, -1, 1024]);
let linear156_out1 = self.linear156.forward(reshape120_out1);
let add121_out1 = add118_out1.add(linear156_out1);
(add121_out1, gather34_out1, concat65_out1, slice70_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule20 {
layernormalization99: LayerNorm,
squeeze34: burn::module::Param<Tensor<2>>,
conv1d17: Conv1d,
layernormalization100: LayerNorm,
squeeze35: burn::module::Param<Tensor<2>>,
layernormalization101: LayerNorm,
linear157: Linear,
linear158: Linear,
layernormalization102: LayerNorm,
layernormalization103: LayerNorm,
linear159: Linear,
linear160: Linear,
layernormalization104: LayerNorm,
linear161: Linear,
linear162: Linear,
linear163: Linear,
linear164: Linear,
constant312: burn::module::Param<Tensor<2>>,
constant313: burn::module::Param<Tensor<2>>,
linear165: Linear,
#[module(skip)]
device: Device,
}
impl Submodule20 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization99 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze34: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d17 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization100 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze35: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization101 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear157 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear158 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization102 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization103 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear159 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear160 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization104 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear161 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear162 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear163 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear164 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant312: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant313: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear165 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization99,
squeeze34,
conv1d17,
layernormalization100,
squeeze35,
layernormalization101,
linear157,
linear158,
layernormalization102,
layernormalization103,
linear159,
linear160,
layernormalization104,
linear161,
linear162,
linear163,
linear164,
constant312,
constant313,
linear165,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add121_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather34_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization99_out1 = {
let dtype = add121_out1.clone().dtype();
self.layernormalization99
.forward(add121_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze34_out1 = self.squeeze34.val();
let transpose246_out1 = squeeze34_out1.permute([1, 0]);
let matmul206_out1 = layernormalization99_out1
.matmul(transpose246_out1.unsqueeze::<3usize>());
let split_tensors = matmul206_out1.split_with_sizes([1024, 1024].into(), 2);
let [split17_out1, split17_out2] = split_tensors.try_into().unwrap();
let sigmoid66_out1 = burn::tensor::activation::sigmoid(split17_out2);
let mul135_out1 = split17_out1.mul(sigmoid66_out1);
let transpose247_out1 = mul135_out1.permute([0, 2, 1]);
let where51_out1 = transpose247_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad34_out1 = where51_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat66_out1 = burn::tensor::Tensor::cat(
[gather34_out1, pad34_out1].into(),
2,
);
let slice74_out1 = concat66_out1.clone().slice(s![.., .., - 8..]);
let conv1d17_out1 = self.conv1d17.forward(concat66_out1);
let transpose248_out1 = conv1d17_out1.permute([0, 2, 1]);
let layernormalization100_out1 = {
let dtype = transpose248_out1.dtype();
self.layernormalization100
.forward(transpose248_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid67_out1 = burn::tensor::activation::sigmoid(
layernormalization100_out1.clone(),
);
let mul136_out1 = layernormalization100_out1.mul(sigmoid67_out1);
let squeeze35_out1 = self.squeeze35.val();
let transpose249_out1 = squeeze35_out1.permute([1, 0]);
let matmul207_out1 = mul136_out1.matmul(transpose249_out1.unsqueeze::<3usize>());
let add122_out1 = add121_out1.add(matmul207_out1);
let layernormalization101_out1 = {
let dtype = add122_out1.clone().dtype();
self.layernormalization101
.forward(add122_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear157_out1 = self.linear157.forward(layernormalization101_out1);
let sigmoid68_out1 = burn::tensor::activation::sigmoid(linear157_out1.clone());
let mul137_out1 = linear157_out1.mul(sigmoid68_out1);
let linear158_out1 = self.linear158.forward(mul137_out1);
let mul138_out1 = linear158_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add123_out1 = add122_out1.add(mul138_out1);
let layernormalization102_out1 = {
let dtype = add123_out1.dtype();
self.layernormalization102
.forward(add123_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather35_out1 = {
let sliced = transpose1_out1.slice(s![17, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather36_out1 = {
let sliced = transpose2_out1.slice(s![17, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization103_out1 = {
let dtype = layernormalization102_out1.clone().dtype();
self.layernormalization103
.forward(
layernormalization102_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear159_out1 = self.linear159.forward(layernormalization103_out1);
let sigmoid69_out1 = burn::tensor::activation::sigmoid(linear159_out1.clone());
let mul139_out1 = linear159_out1.mul(sigmoid69_out1);
let linear160_out1 = self.linear160.forward(mul139_out1);
let mul140_out1 = linear160_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add124_out1 = layernormalization102_out1.add(mul140_out1);
let layernormalization104_out1 = {
let dtype = add124_out1.clone().dtype();
self.layernormalization104
.forward(add124_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat67_out1 = burn::tensor::Tensor::cat(
[gather35_out1.clone(), layernormalization104_out1.clone()].into(),
1,
);
let transpose250_out1 = gather35_out1.permute([1, 0, 2]);
let slice75_out1 = transpose250_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose251_out1 = slice75_out1.permute([1, 0, 2]);
let concat68_out1 = burn::tensor::Tensor::cat(
[transpose251_out1, layernormalization104_out1.clone()].into(),
1,
);
let linear161_out1 = self.linear161.forward(layernormalization104_out1);
let reshape121_out1 = linear161_out1.reshape([1, -1, 8, 128]);
let linear162_out1 = self.linear162.forward(concat67_out1.clone());
let reshape122_out1 = linear162_out1.reshape([1, -1, 8, 128]);
let linear163_out1 = self.linear163.forward(concat67_out1);
let reshape123_out1 = linear163_out1.reshape([1, -1, 8, 128]);
let transpose252_out1 = reshape122_out1.permute([0, 2, 1, 3]);
let transpose253_out1 = reshape123_out1.permute([0, 2, 1, 3]);
let linear164_out1 = self.linear164.forward(transpose6_out1);
let reshape124_out1 = linear164_out1.reshape([1, -1, 8, 128]);
let constant312_out1 = self.constant312.val();
let add125_out1 = reshape121_out1
.clone()
.add((constant312_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose254_out1 = add125_out1.permute([0, 2, 1, 3]);
let constant313_out1 = self.constant313.val();
let add126_out1 = reshape121_out1
.add((constant313_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose255_out1 = add126_out1.permute([0, 2, 1, 3]);
let transpose256_out1 = reshape124_out1.permute([0, 2, 3, 1]);
let matmul216_out1 = transpose255_out1.matmul(transpose256_out1);
let pad35_out1 = matmul216_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape125_out1 = pad35_out1.reshape(concat16_out1);
let slice76_out1 = reshape125_out1.slice(s![.., .., 1.., ..]);
let reshape126_out1 = slice76_out1.reshape(concat17_out1);
let transpose257_out1 = reshape126_out1.permute([3, 0, 1, 2]);
let slice77_out1 = transpose257_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose258_out1 = slice77_out1.permute([1, 2, 3, 0]);
let mul141_out1 = transpose258_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where52_out1 = mul141_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention18_out1,) = {
let q = transpose254_out1;
let k = transpose252_out1;
let v = transpose253_out1;
let score_bias = where52_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention18_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention18_out1 = {
let dims = attention18_out1.dims();
attention18_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention18_out1,)
};
let where53_out1 = attention18_out1.mask_fill(expand15_out1, constant453_out1);
let transpose259_out1 = where53_out1.permute([0, 2, 1, 3]);
let reshape127_out1 = transpose259_out1.reshape([1, -1, 1024]);
let linear165_out1 = self.linear165.forward(reshape127_out1);
let add127_out1 = add124_out1.add(linear165_out1);
(add127_out1, gather36_out1, concat68_out1, slice74_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule21 {
layernormalization105: LayerNorm,
squeeze36: burn::module::Param<Tensor<2>>,
conv1d18: Conv1d,
layernormalization106: LayerNorm,
squeeze37: burn::module::Param<Tensor<2>>,
layernormalization107: LayerNorm,
linear166: Linear,
linear167: Linear,
layernormalization108: LayerNorm,
layernormalization109: LayerNorm,
linear168: Linear,
linear169: Linear,
layernormalization110: LayerNorm,
linear170: Linear,
linear171: Linear,
linear172: Linear,
linear173: Linear,
constant329: burn::module::Param<Tensor<2>>,
constant330: burn::module::Param<Tensor<2>>,
linear174: Linear,
#[module(skip)]
device: Device,
}
impl Submodule21 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization105 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze36: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d18 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization106 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze37: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization107 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear166 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear167 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization108 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization109 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear168 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear169 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization110 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear170 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear171 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear172 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear173 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant329: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant330: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear174 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization105,
squeeze36,
conv1d18,
layernormalization106,
squeeze37,
layernormalization107,
linear166,
linear167,
layernormalization108,
layernormalization109,
linear168,
linear169,
layernormalization110,
linear170,
linear171,
linear172,
linear173,
constant329,
constant330,
linear174,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add127_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather36_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization105_out1 = {
let dtype = add127_out1.clone().dtype();
self.layernormalization105
.forward(add127_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze36_out1 = self.squeeze36.val();
let transpose260_out1 = squeeze36_out1.permute([1, 0]);
let matmul218_out1 = layernormalization105_out1
.matmul(transpose260_out1.unsqueeze::<3usize>());
let split_tensors = matmul218_out1.split_with_sizes([1024, 1024].into(), 2);
let [split18_out1, split18_out2] = split_tensors.try_into().unwrap();
let sigmoid70_out1 = burn::tensor::activation::sigmoid(split18_out2);
let mul142_out1 = split18_out1.mul(sigmoid70_out1);
let transpose261_out1 = mul142_out1.permute([0, 2, 1]);
let where54_out1 = transpose261_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad36_out1 = where54_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat69_out1 = burn::tensor::Tensor::cat(
[gather36_out1, pad36_out1].into(),
2,
);
let slice78_out1 = concat69_out1.clone().slice(s![.., .., - 8..]);
let conv1d18_out1 = self.conv1d18.forward(concat69_out1);
let transpose262_out1 = conv1d18_out1.permute([0, 2, 1]);
let layernormalization106_out1 = {
let dtype = transpose262_out1.dtype();
self.layernormalization106
.forward(transpose262_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid71_out1 = burn::tensor::activation::sigmoid(
layernormalization106_out1.clone(),
);
let mul143_out1 = layernormalization106_out1.mul(sigmoid71_out1);
let squeeze37_out1 = self.squeeze37.val();
let transpose263_out1 = squeeze37_out1.permute([1, 0]);
let matmul219_out1 = mul143_out1.matmul(transpose263_out1.unsqueeze::<3usize>());
let add128_out1 = add127_out1.add(matmul219_out1);
let layernormalization107_out1 = {
let dtype = add128_out1.clone().dtype();
self.layernormalization107
.forward(add128_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear166_out1 = self.linear166.forward(layernormalization107_out1);
let sigmoid72_out1 = burn::tensor::activation::sigmoid(linear166_out1.clone());
let mul144_out1 = linear166_out1.mul(sigmoid72_out1);
let linear167_out1 = self.linear167.forward(mul144_out1);
let mul145_out1 = linear167_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add129_out1 = add128_out1.add(mul145_out1);
let layernormalization108_out1 = {
let dtype = add129_out1.dtype();
self.layernormalization108
.forward(add129_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather37_out1 = {
let sliced = transpose1_out1.slice(s![18, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather38_out1 = {
let sliced = transpose2_out1.slice(s![18, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization109_out1 = {
let dtype = layernormalization108_out1.clone().dtype();
self.layernormalization109
.forward(
layernormalization108_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear168_out1 = self.linear168.forward(layernormalization109_out1);
let sigmoid73_out1 = burn::tensor::activation::sigmoid(linear168_out1.clone());
let mul146_out1 = linear168_out1.mul(sigmoid73_out1);
let linear169_out1 = self.linear169.forward(mul146_out1);
let mul147_out1 = linear169_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add130_out1 = layernormalization108_out1.add(mul147_out1);
let layernormalization110_out1 = {
let dtype = add130_out1.clone().dtype();
self.layernormalization110
.forward(add130_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat70_out1 = burn::tensor::Tensor::cat(
[gather37_out1.clone(), layernormalization110_out1.clone()].into(),
1,
);
let transpose264_out1 = gather37_out1.permute([1, 0, 2]);
let slice79_out1 = transpose264_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose265_out1 = slice79_out1.permute([1, 0, 2]);
let concat71_out1 = burn::tensor::Tensor::cat(
[transpose265_out1, layernormalization110_out1.clone()].into(),
1,
);
let linear170_out1 = self.linear170.forward(layernormalization110_out1);
let reshape128_out1 = linear170_out1.reshape([1, -1, 8, 128]);
let linear171_out1 = self.linear171.forward(concat70_out1.clone());
let reshape129_out1 = linear171_out1.reshape([1, -1, 8, 128]);
let linear172_out1 = self.linear172.forward(concat70_out1);
let reshape130_out1 = linear172_out1.reshape([1, -1, 8, 128]);
let transpose266_out1 = reshape129_out1.permute([0, 2, 1, 3]);
let transpose267_out1 = reshape130_out1.permute([0, 2, 1, 3]);
let linear173_out1 = self.linear173.forward(transpose6_out1);
let reshape131_out1 = linear173_out1.reshape([1, -1, 8, 128]);
let constant329_out1 = self.constant329.val();
let add131_out1 = reshape128_out1
.clone()
.add((constant329_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose268_out1 = add131_out1.permute([0, 2, 1, 3]);
let constant330_out1 = self.constant330.val();
let add132_out1 = reshape128_out1
.add((constant330_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose269_out1 = add132_out1.permute([0, 2, 1, 3]);
let transpose270_out1 = reshape131_out1.permute([0, 2, 3, 1]);
let matmul228_out1 = transpose269_out1.matmul(transpose270_out1);
let pad37_out1 = matmul228_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape132_out1 = pad37_out1.reshape(concat16_out1);
let slice80_out1 = reshape132_out1.slice(s![.., .., 1.., ..]);
let reshape133_out1 = slice80_out1.reshape(concat17_out1);
let transpose271_out1 = reshape133_out1.permute([3, 0, 1, 2]);
let slice81_out1 = transpose271_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose272_out1 = slice81_out1.permute([1, 2, 3, 0]);
let mul148_out1 = transpose272_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where55_out1 = mul148_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention19_out1,) = {
let q = transpose268_out1;
let k = transpose266_out1;
let v = transpose267_out1;
let score_bias = where55_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention19_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention19_out1 = {
let dims = attention19_out1.dims();
attention19_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention19_out1,)
};
let where56_out1 = attention19_out1.mask_fill(expand15_out1, constant453_out1);
let transpose273_out1 = where56_out1.permute([0, 2, 1, 3]);
let reshape134_out1 = transpose273_out1.reshape([1, -1, 1024]);
let linear174_out1 = self.linear174.forward(reshape134_out1);
let add133_out1 = add130_out1.add(linear174_out1);
(add133_out1, gather38_out1, concat71_out1, slice78_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule22 {
layernormalization111: LayerNorm,
squeeze38: burn::module::Param<Tensor<2>>,
conv1d19: Conv1d,
layernormalization112: LayerNorm,
squeeze39: burn::module::Param<Tensor<2>>,
layernormalization113: LayerNorm,
linear175: Linear,
linear176: Linear,
layernormalization114: LayerNorm,
layernormalization115: LayerNorm,
linear177: Linear,
linear178: Linear,
layernormalization116: LayerNorm,
linear179: Linear,
linear180: Linear,
linear181: Linear,
linear182: Linear,
constant346: burn::module::Param<Tensor<2>>,
constant347: burn::module::Param<Tensor<2>>,
linear183: Linear,
#[module(skip)]
device: Device,
}
impl Submodule22 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization111 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze38: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d19 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization112 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze39: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization113 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear175 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear176 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization114 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization115 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear177 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear178 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization116 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear179 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear180 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear181 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear182 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant346: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant347: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear183 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization111,
squeeze38,
conv1d19,
layernormalization112,
squeeze39,
layernormalization113,
linear175,
linear176,
layernormalization114,
layernormalization115,
linear177,
linear178,
layernormalization116,
linear179,
linear180,
linear181,
linear182,
constant346,
constant347,
linear183,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add133_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather38_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization111_out1 = {
let dtype = add133_out1.clone().dtype();
self.layernormalization111
.forward(add133_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze38_out1 = self.squeeze38.val();
let transpose274_out1 = squeeze38_out1.permute([1, 0]);
let matmul230_out1 = layernormalization111_out1
.matmul(transpose274_out1.unsqueeze::<3usize>());
let split_tensors = matmul230_out1.split_with_sizes([1024, 1024].into(), 2);
let [split19_out1, split19_out2] = split_tensors.try_into().unwrap();
let sigmoid74_out1 = burn::tensor::activation::sigmoid(split19_out2);
let mul149_out1 = split19_out1.mul(sigmoid74_out1);
let transpose275_out1 = mul149_out1.permute([0, 2, 1]);
let where57_out1 = transpose275_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad38_out1 = where57_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat72_out1 = burn::tensor::Tensor::cat(
[gather38_out1, pad38_out1].into(),
2,
);
let slice82_out1 = concat72_out1.clone().slice(s![.., .., - 8..]);
let conv1d19_out1 = self.conv1d19.forward(concat72_out1);
let transpose276_out1 = conv1d19_out1.permute([0, 2, 1]);
let layernormalization112_out1 = {
let dtype = transpose276_out1.dtype();
self.layernormalization112
.forward(transpose276_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid75_out1 = burn::tensor::activation::sigmoid(
layernormalization112_out1.clone(),
);
let mul150_out1 = layernormalization112_out1.mul(sigmoid75_out1);
let squeeze39_out1 = self.squeeze39.val();
let transpose277_out1 = squeeze39_out1.permute([1, 0]);
let matmul231_out1 = mul150_out1.matmul(transpose277_out1.unsqueeze::<3usize>());
let add134_out1 = add133_out1.add(matmul231_out1);
let layernormalization113_out1 = {
let dtype = add134_out1.clone().dtype();
self.layernormalization113
.forward(add134_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear175_out1 = self.linear175.forward(layernormalization113_out1);
let sigmoid76_out1 = burn::tensor::activation::sigmoid(linear175_out1.clone());
let mul151_out1 = linear175_out1.mul(sigmoid76_out1);
let linear176_out1 = self.linear176.forward(mul151_out1);
let mul152_out1 = linear176_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add135_out1 = add134_out1.add(mul152_out1);
let layernormalization114_out1 = {
let dtype = add135_out1.dtype();
self.layernormalization114
.forward(add135_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather39_out1 = {
let sliced = transpose1_out1.slice(s![19, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather40_out1 = {
let sliced = transpose2_out1.slice(s![19, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization115_out1 = {
let dtype = layernormalization114_out1.clone().dtype();
self.layernormalization115
.forward(
layernormalization114_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear177_out1 = self.linear177.forward(layernormalization115_out1);
let sigmoid77_out1 = burn::tensor::activation::sigmoid(linear177_out1.clone());
let mul153_out1 = linear177_out1.mul(sigmoid77_out1);
let linear178_out1 = self.linear178.forward(mul153_out1);
let mul154_out1 = linear178_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add136_out1 = layernormalization114_out1.add(mul154_out1);
let layernormalization116_out1 = {
let dtype = add136_out1.clone().dtype();
self.layernormalization116
.forward(add136_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat73_out1 = burn::tensor::Tensor::cat(
[gather39_out1.clone(), layernormalization116_out1.clone()].into(),
1,
);
let transpose278_out1 = gather39_out1.permute([1, 0, 2]);
let slice83_out1 = transpose278_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose279_out1 = slice83_out1.permute([1, 0, 2]);
let concat74_out1 = burn::tensor::Tensor::cat(
[transpose279_out1, layernormalization116_out1.clone()].into(),
1,
);
let linear179_out1 = self.linear179.forward(layernormalization116_out1);
let reshape135_out1 = linear179_out1.reshape([1, -1, 8, 128]);
let linear180_out1 = self.linear180.forward(concat73_out1.clone());
let reshape136_out1 = linear180_out1.reshape([1, -1, 8, 128]);
let linear181_out1 = self.linear181.forward(concat73_out1);
let reshape137_out1 = linear181_out1.reshape([1, -1, 8, 128]);
let transpose280_out1 = reshape136_out1.permute([0, 2, 1, 3]);
let transpose281_out1 = reshape137_out1.permute([0, 2, 1, 3]);
let linear182_out1 = self.linear182.forward(transpose6_out1);
let reshape138_out1 = linear182_out1.reshape([1, -1, 8, 128]);
let constant346_out1 = self.constant346.val();
let add137_out1 = reshape135_out1
.clone()
.add((constant346_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose282_out1 = add137_out1.permute([0, 2, 1, 3]);
let constant347_out1 = self.constant347.val();
let add138_out1 = reshape135_out1
.add((constant347_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose283_out1 = add138_out1.permute([0, 2, 1, 3]);
let transpose284_out1 = reshape138_out1.permute([0, 2, 3, 1]);
let matmul240_out1 = transpose283_out1.matmul(transpose284_out1);
let pad39_out1 = matmul240_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape139_out1 = pad39_out1.reshape(concat16_out1);
let slice84_out1 = reshape139_out1.slice(s![.., .., 1.., ..]);
let reshape140_out1 = slice84_out1.reshape(concat17_out1);
let transpose285_out1 = reshape140_out1.permute([3, 0, 1, 2]);
let slice85_out1 = transpose285_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose286_out1 = slice85_out1.permute([1, 2, 3, 0]);
let mul155_out1 = transpose286_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where58_out1 = mul155_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention20_out1,) = {
let q = transpose282_out1;
let k = transpose280_out1;
let v = transpose281_out1;
let score_bias = where58_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention20_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention20_out1 = {
let dims = attention20_out1.dims();
attention20_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention20_out1,)
};
let where59_out1 = attention20_out1.mask_fill(expand15_out1, constant453_out1);
let transpose287_out1 = where59_out1.permute([0, 2, 1, 3]);
let reshape141_out1 = transpose287_out1.reshape([1, -1, 1024]);
let linear183_out1 = self.linear183.forward(reshape141_out1);
let add139_out1 = add136_out1.add(linear183_out1);
(add139_out1, gather40_out1, concat74_out1, slice82_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule23 {
layernormalization117: LayerNorm,
squeeze40: burn::module::Param<Tensor<2>>,
conv1d20: Conv1d,
layernormalization118: LayerNorm,
squeeze41: burn::module::Param<Tensor<2>>,
layernormalization119: LayerNorm,
linear184: Linear,
linear185: Linear,
layernormalization120: LayerNorm,
layernormalization121: LayerNorm,
linear186: Linear,
linear187: Linear,
layernormalization122: LayerNorm,
linear188: Linear,
linear189: Linear,
linear190: Linear,
linear191: Linear,
constant363: burn::module::Param<Tensor<2>>,
constant364: burn::module::Param<Tensor<2>>,
linear192: Linear,
#[module(skip)]
device: Device,
}
impl Submodule23 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization117 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze40: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d20 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization118 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze41: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization119 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear184 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear185 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization120 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization121 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear186 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear187 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization122 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear188 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear189 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear190 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear191 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant363: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant364: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear192 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
Self {
layernormalization117,
squeeze40,
conv1d20,
layernormalization118,
squeeze41,
layernormalization119,
linear184,
linear185,
layernormalization120,
layernormalization121,
linear186,
linear187,
layernormalization122,
linear188,
linear189,
linear190,
linear191,
constant363,
constant364,
linear192,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add139_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather40_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (Tensor<3>, Tensor<3>, Tensor<3>, Tensor<3>) {
let layernormalization117_out1 = {
let dtype = add139_out1.clone().dtype();
self.layernormalization117
.forward(add139_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze40_out1 = self.squeeze40.val();
let transpose288_out1 = squeeze40_out1.permute([1, 0]);
let matmul242_out1 = layernormalization117_out1
.matmul(transpose288_out1.unsqueeze::<3usize>());
let split_tensors = matmul242_out1.split_with_sizes([1024, 1024].into(), 2);
let [split20_out1, split20_out2] = split_tensors.try_into().unwrap();
let sigmoid78_out1 = burn::tensor::activation::sigmoid(split20_out2);
let mul156_out1 = split20_out1.mul(sigmoid78_out1);
let transpose289_out1 = mul156_out1.permute([0, 2, 1]);
let where60_out1 = transpose289_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad40_out1 = where60_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat75_out1 = burn::tensor::Tensor::cat(
[gather40_out1, pad40_out1].into(),
2,
);
let slice86_out1 = concat75_out1.clone().slice(s![.., .., - 8..]);
let conv1d20_out1 = self.conv1d20.forward(concat75_out1);
let transpose290_out1 = conv1d20_out1.permute([0, 2, 1]);
let layernormalization118_out1 = {
let dtype = transpose290_out1.dtype();
self.layernormalization118
.forward(transpose290_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid79_out1 = burn::tensor::activation::sigmoid(
layernormalization118_out1.clone(),
);
let mul157_out1 = layernormalization118_out1.mul(sigmoid79_out1);
let squeeze41_out1 = self.squeeze41.val();
let transpose291_out1 = squeeze41_out1.permute([1, 0]);
let matmul243_out1 = mul157_out1.matmul(transpose291_out1.unsqueeze::<3usize>());
let add140_out1 = add139_out1.add(matmul243_out1);
let layernormalization119_out1 = {
let dtype = add140_out1.clone().dtype();
self.layernormalization119
.forward(add140_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear184_out1 = self.linear184.forward(layernormalization119_out1);
let sigmoid80_out1 = burn::tensor::activation::sigmoid(linear184_out1.clone());
let mul158_out1 = linear184_out1.mul(sigmoid80_out1);
let linear185_out1 = self.linear185.forward(mul158_out1);
let mul159_out1 = linear185_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add141_out1 = add140_out1.add(mul159_out1);
let layernormalization120_out1 = {
let dtype = add141_out1.dtype();
self.layernormalization120
.forward(add141_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather41_out1 = {
let sliced = transpose1_out1.slice(s![20, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather42_out1 = {
let sliced = transpose2_out1.slice(s![20, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization121_out1 = {
let dtype = layernormalization120_out1.clone().dtype();
self.layernormalization121
.forward(
layernormalization120_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear186_out1 = self.linear186.forward(layernormalization121_out1);
let sigmoid81_out1 = burn::tensor::activation::sigmoid(linear186_out1.clone());
let mul160_out1 = linear186_out1.mul(sigmoid81_out1);
let linear187_out1 = self.linear187.forward(mul160_out1);
let mul161_out1 = linear187_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add142_out1 = layernormalization120_out1.add(mul161_out1);
let layernormalization122_out1 = {
let dtype = add142_out1.clone().dtype();
self.layernormalization122
.forward(add142_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat76_out1 = burn::tensor::Tensor::cat(
[gather41_out1.clone(), layernormalization122_out1.clone()].into(),
1,
);
let transpose292_out1 = gather41_out1.permute([1, 0, 2]);
let slice87_out1 = transpose292_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose293_out1 = slice87_out1.permute([1, 0, 2]);
let concat77_out1 = burn::tensor::Tensor::cat(
[transpose293_out1, layernormalization122_out1.clone()].into(),
1,
);
let linear188_out1 = self.linear188.forward(layernormalization122_out1);
let reshape142_out1 = linear188_out1.reshape([1, -1, 8, 128]);
let linear189_out1 = self.linear189.forward(concat76_out1.clone());
let reshape143_out1 = linear189_out1.reshape([1, -1, 8, 128]);
let linear190_out1 = self.linear190.forward(concat76_out1);
let reshape144_out1 = linear190_out1.reshape([1, -1, 8, 128]);
let transpose294_out1 = reshape143_out1.permute([0, 2, 1, 3]);
let transpose295_out1 = reshape144_out1.permute([0, 2, 1, 3]);
let linear191_out1 = self.linear191.forward(transpose6_out1);
let reshape145_out1 = linear191_out1.reshape([1, -1, 8, 128]);
let constant363_out1 = self.constant363.val();
let add143_out1 = reshape142_out1
.clone()
.add((constant363_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose296_out1 = add143_out1.permute([0, 2, 1, 3]);
let constant364_out1 = self.constant364.val();
let add144_out1 = reshape142_out1
.add((constant364_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose297_out1 = add144_out1.permute([0, 2, 1, 3]);
let transpose298_out1 = reshape145_out1.permute([0, 2, 3, 1]);
let matmul252_out1 = transpose297_out1.matmul(transpose298_out1);
let pad41_out1 = matmul252_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape146_out1 = pad41_out1.reshape(concat16_out1);
let slice88_out1 = reshape146_out1.slice(s![.., .., 1.., ..]);
let reshape147_out1 = slice88_out1.reshape(concat17_out1);
let transpose299_out1 = reshape147_out1.permute([3, 0, 1, 2]);
let slice89_out1 = transpose299_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose300_out1 = slice89_out1.permute([1, 2, 3, 0]);
let mul162_out1 = transpose300_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where61_out1 = mul162_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention21_out1,) = {
let q = transpose296_out1;
let k = transpose294_out1;
let v = transpose295_out1;
let score_bias = where61_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention21_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention21_out1 = {
let dims = attention21_out1.dims();
attention21_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention21_out1,)
};
let where62_out1 = attention21_out1.mask_fill(expand15_out1, constant453_out1);
let transpose301_out1 = where62_out1.permute([0, 2, 1, 3]);
let reshape148_out1 = transpose301_out1.reshape([1, -1, 1024]);
let linear192_out1 = self.linear192.forward(reshape148_out1);
let add145_out1 = add142_out1.add(linear192_out1);
(add145_out1, gather42_out1, concat77_out1, slice86_out1)
}
}
#[derive(Module, Debug)]
pub struct Submodule24 {
layernormalization123: LayerNorm,
squeeze42: burn::module::Param<Tensor<2>>,
conv1d21: Conv1d,
layernormalization124: LayerNorm,
squeeze43: burn::module::Param<Tensor<2>>,
layernormalization125: LayerNorm,
linear193: Linear,
linear194: Linear,
layernormalization126: LayerNorm,
layernormalization127: LayerNorm,
linear195: Linear,
linear196: Linear,
layernormalization128: LayerNorm,
linear197: Linear,
linear198: Linear,
linear199: Linear,
linear200: Linear,
constant380: burn::module::Param<Tensor<2>>,
constant381: burn::module::Param<Tensor<2>>,
linear201: Linear,
layernormalization129: LayerNorm,
squeeze44: burn::module::Param<Tensor<2>>,
conv1d22: Conv1d,
layernormalization130: LayerNorm,
squeeze45: burn::module::Param<Tensor<2>>,
layernormalization131: LayerNorm,
linear202: Linear,
linear203: Linear,
layernormalization132: LayerNorm,
layernormalization133: LayerNorm,
linear204: Linear,
linear205: Linear,
layernormalization134: LayerNorm,
linear206: Linear,
linear207: Linear,
linear208: Linear,
linear209: Linear,
constant397: burn::module::Param<Tensor<2>>,
constant398: burn::module::Param<Tensor<2>>,
linear210: Linear,
layernormalization135: LayerNorm,
squeeze46: burn::module::Param<Tensor<2>>,
conv1d23: Conv1d,
layernormalization136: LayerNorm,
squeeze47: burn::module::Param<Tensor<2>>,
layernormalization137: LayerNorm,
linear211: Linear,
linear212: Linear,
layernormalization138: LayerNorm,
layernormalization139: LayerNorm,
linear213: Linear,
linear214: Linear,
layernormalization140: LayerNorm,
linear215: Linear,
linear216: Linear,
linear217: Linear,
linear218: Linear,
constant414: burn::module::Param<Tensor<2>>,
constant415: burn::module::Param<Tensor<2>>,
linear219: Linear,
layernormalization141: LayerNorm,
squeeze48: burn::module::Param<Tensor<2>>,
#[module(skip)]
device: Device,
}
impl Submodule24 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let layernormalization123 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze42: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d21 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization124 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze43: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization125 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear193 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear194 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization126 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization127 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear195 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear196 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization128 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear197 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear198 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear199 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear200 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant380: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant381: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear201 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let layernormalization129 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze44: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d22 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization130 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze45: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization131 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear202 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear203 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization132 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization133 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear204 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear205 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization134 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear206 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear207 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear208 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear209 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant397: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant398: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear210 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let layernormalization135 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze46: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
let conv1d23 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization136 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze47: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization137 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear211 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear212 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization138 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let layernormalization139 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear213 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear214 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization140 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear215 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear216 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear217 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let linear218 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let constant414: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let constant415: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([8, 128], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[8, 128].into(),
);
let linear219 = LinearConfig::new(1024, 1024).with_bias(false).init(device);
let layernormalization141 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze48: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([2048, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[2048, 1024].into(),
);
Self {
layernormalization123,
squeeze42,
conv1d21,
layernormalization124,
squeeze43,
layernormalization125,
linear193,
linear194,
layernormalization126,
layernormalization127,
linear195,
linear196,
layernormalization128,
linear197,
linear198,
linear199,
linear200,
constant380,
constant381,
linear201,
layernormalization129,
squeeze44,
conv1d22,
layernormalization130,
squeeze45,
layernormalization131,
linear202,
linear203,
layernormalization132,
layernormalization133,
linear204,
linear205,
layernormalization134,
linear206,
linear207,
linear208,
linear209,
constant397,
constant398,
linear210,
layernormalization135,
squeeze46,
conv1d23,
layernormalization136,
squeeze47,
layernormalization137,
linear211,
linear212,
layernormalization138,
layernormalization139,
linear213,
linear214,
layernormalization140,
linear215,
linear216,
linear217,
linear218,
constant414,
constant415,
linear219,
layernormalization141,
squeeze48,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
add145_out1: Tensor<3>,
unsqueeze33_out1: Tensor<3, Bool>,
constant453_out1: f32,
gather42_out1: Tensor<3>,
constant684_out1: Tensor<1>,
transpose1_out1: Tensor<4>,
transpose2_out1: Tensor<4>,
unsqueeze29_out1: [i64; 1],
transpose6_out1: Tensor<3>,
concat16_out1: [i64; 4],
concat17_out1: [i64; 4],
unsqueeze19_out1: [i64; 1],
constant687_out1: Tensor<1>,
unsqueeze31_out1: Tensor<4, Bool>,
constant450_out1: f32,
expand15_out1: Tensor<4, Bool>,
) -> (
Tensor<3>,
Tensor<3>,
Tensor<3>,
Tensor<3>,
Tensor<3>,
Tensor<3>,
Tensor<3>,
Tensor<3>,
) {
let layernormalization123_out1 = {
let dtype = add145_out1.clone().dtype();
self.layernormalization123
.forward(add145_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze42_out1 = self.squeeze42.val();
let transpose302_out1 = squeeze42_out1.permute([1, 0]);
let matmul254_out1 = layernormalization123_out1
.matmul(transpose302_out1.unsqueeze::<3usize>());
let split_tensors = matmul254_out1.split_with_sizes([1024, 1024].into(), 2);
let [split21_out1, split21_out2] = split_tensors.try_into().unwrap();
let sigmoid82_out1 = burn::tensor::activation::sigmoid(split21_out2);
let mul163_out1 = split21_out1.mul(sigmoid82_out1);
let transpose303_out1 = mul163_out1.permute([0, 2, 1]);
let where63_out1 = transpose303_out1
.mask_fill(unsqueeze33_out1.clone(), constant453_out1);
let pad42_out1 = where63_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat78_out1 = burn::tensor::Tensor::cat(
[gather42_out1, pad42_out1].into(),
2,
);
let slice90_out1 = concat78_out1.clone().slice(s![.., .., - 8..]);
let conv1d21_out1 = self.conv1d21.forward(concat78_out1);
let transpose304_out1 = conv1d21_out1.permute([0, 2, 1]);
let layernormalization124_out1 = {
let dtype = transpose304_out1.dtype();
self.layernormalization124
.forward(transpose304_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid83_out1 = burn::tensor::activation::sigmoid(
layernormalization124_out1.clone(),
);
let mul164_out1 = layernormalization124_out1.mul(sigmoid83_out1);
let squeeze43_out1 = self.squeeze43.val();
let transpose305_out1 = squeeze43_out1.permute([1, 0]);
let matmul255_out1 = mul164_out1.matmul(transpose305_out1.unsqueeze::<3usize>());
let add146_out1 = add145_out1.add(matmul255_out1);
let layernormalization125_out1 = {
let dtype = add146_out1.clone().dtype();
self.layernormalization125
.forward(add146_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear193_out1 = self.linear193.forward(layernormalization125_out1);
let sigmoid84_out1 = burn::tensor::activation::sigmoid(linear193_out1.clone());
let mul165_out1 = linear193_out1.mul(sigmoid84_out1);
let linear194_out1 = self.linear194.forward(mul165_out1);
let mul166_out1 = linear194_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add147_out1 = add146_out1.add(mul166_out1);
let layernormalization126_out1 = {
let dtype = add147_out1.dtype();
self.layernormalization126
.forward(add147_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather43_out1 = {
let sliced = transpose1_out1.clone().slice(s![21, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather44_out1 = {
let sliced = transpose2_out1.clone().slice(s![21, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization127_out1 = {
let dtype = layernormalization126_out1.clone().dtype();
self.layernormalization127
.forward(
layernormalization126_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear195_out1 = self.linear195.forward(layernormalization127_out1);
let sigmoid85_out1 = burn::tensor::activation::sigmoid(linear195_out1.clone());
let mul167_out1 = linear195_out1.mul(sigmoid85_out1);
let linear196_out1 = self.linear196.forward(mul167_out1);
let mul168_out1 = linear196_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add148_out1 = layernormalization126_out1.add(mul168_out1);
let layernormalization128_out1 = {
let dtype = add148_out1.clone().dtype();
self.layernormalization128
.forward(add148_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat79_out1 = burn::tensor::Tensor::cat(
[gather43_out1.clone(), layernormalization128_out1.clone()].into(),
1,
);
let transpose306_out1 = gather43_out1.permute([1, 0, 2]);
let slice91_out1 = transpose306_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose307_out1 = slice91_out1.permute([1, 0, 2]);
let concat80_out1 = burn::tensor::Tensor::cat(
[transpose307_out1, layernormalization128_out1.clone()].into(),
1,
);
let linear197_out1 = self.linear197.forward(layernormalization128_out1);
let reshape149_out1 = linear197_out1.reshape([1, -1, 8, 128]);
let linear198_out1 = self.linear198.forward(concat79_out1.clone());
let reshape150_out1 = linear198_out1.reshape([1, -1, 8, 128]);
let linear199_out1 = self.linear199.forward(concat79_out1);
let reshape151_out1 = linear199_out1.reshape([1, -1, 8, 128]);
let transpose308_out1 = reshape150_out1.permute([0, 2, 1, 3]);
let transpose309_out1 = reshape151_out1.permute([0, 2, 1, 3]);
let linear200_out1 = self.linear200.forward(transpose6_out1.clone());
let reshape152_out1 = linear200_out1.reshape([1, -1, 8, 128]);
let constant380_out1 = self.constant380.val();
let add149_out1 = reshape149_out1
.clone()
.add((constant380_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose310_out1 = add149_out1.permute([0, 2, 1, 3]);
let constant381_out1 = self.constant381.val();
let add150_out1 = reshape149_out1
.add((constant381_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose311_out1 = add150_out1.permute([0, 2, 1, 3]);
let transpose312_out1 = reshape152_out1.permute([0, 2, 3, 1]);
let matmul264_out1 = transpose311_out1.matmul(transpose312_out1);
let pad43_out1 = matmul264_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape153_out1 = pad43_out1.reshape(concat16_out1);
let slice92_out1 = reshape153_out1.slice(s![.., .., 1.., ..]);
let reshape154_out1 = slice92_out1.reshape(concat17_out1);
let transpose313_out1 = reshape154_out1.permute([3, 0, 1, 2]);
let slice93_out1 = transpose313_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose314_out1 = slice93_out1.permute([1, 2, 3, 0]);
let mul169_out1 = transpose314_out1
.mul((constant687_out1.clone()).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where64_out1 = mul169_out1
.mask_fill(unsqueeze31_out1.clone(), constant450_out1);
let (attention22_out1,) = {
let q = transpose310_out1;
let k = transpose308_out1;
let v = transpose309_out1;
let score_bias = where64_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention22_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention22_out1 = {
let dims = attention22_out1.dims();
attention22_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention22_out1,)
};
let where65_out1 = attention22_out1
.mask_fill(expand15_out1.clone(), constant453_out1);
let transpose315_out1 = where65_out1.permute([0, 2, 1, 3]);
let reshape155_out1 = transpose315_out1.reshape([1, -1, 1024]);
let linear201_out1 = self.linear201.forward(reshape155_out1);
let add151_out1 = add148_out1.add(linear201_out1);
let layernormalization129_out1 = {
let dtype = add151_out1.clone().dtype();
self.layernormalization129
.forward(add151_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze44_out1 = self.squeeze44.val();
let transpose316_out1 = squeeze44_out1.permute([1, 0]);
let matmul266_out1 = layernormalization129_out1
.matmul(transpose316_out1.unsqueeze::<3usize>());
let split_tensors = matmul266_out1.split_with_sizes([1024, 1024].into(), 2);
let [split22_out1, split22_out2] = split_tensors.try_into().unwrap();
let sigmoid86_out1 = burn::tensor::activation::sigmoid(split22_out2);
let mul170_out1 = split22_out1.mul(sigmoid86_out1);
let transpose317_out1 = mul170_out1.permute([0, 2, 1]);
let where66_out1 = transpose317_out1
.mask_fill(unsqueeze33_out1.clone(), constant453_out1);
let pad44_out1 = where66_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat81_out1 = burn::tensor::Tensor::cat(
[gather44_out1, pad44_out1].into(),
2,
);
let slice94_out1 = concat81_out1.clone().slice(s![.., .., - 8..]);
let conv1d22_out1 = self.conv1d22.forward(concat81_out1);
let transpose318_out1 = conv1d22_out1.permute([0, 2, 1]);
let layernormalization130_out1 = {
let dtype = transpose318_out1.dtype();
self.layernormalization130
.forward(transpose318_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid87_out1 = burn::tensor::activation::sigmoid(
layernormalization130_out1.clone(),
);
let mul171_out1 = layernormalization130_out1.mul(sigmoid87_out1);
let squeeze45_out1 = self.squeeze45.val();
let transpose319_out1 = squeeze45_out1.permute([1, 0]);
let matmul267_out1 = mul171_out1.matmul(transpose319_out1.unsqueeze::<3usize>());
let add152_out1 = add151_out1.add(matmul267_out1);
let layernormalization131_out1 = {
let dtype = add152_out1.clone().dtype();
self.layernormalization131
.forward(add152_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear202_out1 = self.linear202.forward(layernormalization131_out1);
let sigmoid88_out1 = burn::tensor::activation::sigmoid(linear202_out1.clone());
let mul172_out1 = linear202_out1.mul(sigmoid88_out1);
let linear203_out1 = self.linear203.forward(mul172_out1);
let mul173_out1 = linear203_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add153_out1 = add152_out1.add(mul173_out1);
let layernormalization132_out1 = {
let dtype = add153_out1.dtype();
self.layernormalization132
.forward(add153_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather45_out1 = {
let sliced = transpose1_out1.clone().slice(s![22, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather46_out1 = {
let sliced = transpose2_out1.clone().slice(s![22, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization133_out1 = {
let dtype = layernormalization132_out1.clone().dtype();
self.layernormalization133
.forward(
layernormalization132_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear204_out1 = self.linear204.forward(layernormalization133_out1);
let sigmoid89_out1 = burn::tensor::activation::sigmoid(linear204_out1.clone());
let mul174_out1 = linear204_out1.mul(sigmoid89_out1);
let linear205_out1 = self.linear205.forward(mul174_out1);
let mul175_out1 = linear205_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add154_out1 = layernormalization132_out1.add(mul175_out1);
let layernormalization134_out1 = {
let dtype = add154_out1.clone().dtype();
self.layernormalization134
.forward(add154_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat82_out1 = burn::tensor::Tensor::cat(
[gather45_out1.clone(), layernormalization134_out1.clone()].into(),
1,
);
let transpose320_out1 = gather45_out1.permute([1, 0, 2]);
let slice95_out1 = transpose320_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose321_out1 = slice95_out1.permute([1, 0, 2]);
let concat83_out1 = burn::tensor::Tensor::cat(
[transpose321_out1, layernormalization134_out1.clone()].into(),
1,
);
let linear206_out1 = self.linear206.forward(layernormalization134_out1);
let reshape156_out1 = linear206_out1.reshape([1, -1, 8, 128]);
let linear207_out1 = self.linear207.forward(concat82_out1.clone());
let reshape157_out1 = linear207_out1.reshape([1, -1, 8, 128]);
let linear208_out1 = self.linear208.forward(concat82_out1);
let reshape158_out1 = linear208_out1.reshape([1, -1, 8, 128]);
let transpose322_out1 = reshape157_out1.permute([0, 2, 1, 3]);
let transpose323_out1 = reshape158_out1.permute([0, 2, 1, 3]);
let linear209_out1 = self.linear209.forward(transpose6_out1.clone());
let reshape159_out1 = linear209_out1.reshape([1, -1, 8, 128]);
let constant397_out1 = self.constant397.val();
let add155_out1 = reshape156_out1
.clone()
.add((constant397_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose324_out1 = add155_out1.permute([0, 2, 1, 3]);
let constant398_out1 = self.constant398.val();
let add156_out1 = reshape156_out1
.add((constant398_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose325_out1 = add156_out1.permute([0, 2, 1, 3]);
let transpose326_out1 = reshape159_out1.permute([0, 2, 3, 1]);
let matmul276_out1 = transpose325_out1.matmul(transpose326_out1);
let pad45_out1 = matmul276_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape160_out1 = pad45_out1.reshape(concat16_out1);
let slice96_out1 = reshape160_out1.slice(s![.., .., 1.., ..]);
let reshape161_out1 = slice96_out1.reshape(concat17_out1);
let transpose327_out1 = reshape161_out1.permute([3, 0, 1, 2]);
let slice97_out1 = transpose327_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose328_out1 = slice97_out1.permute([1, 2, 3, 0]);
let mul176_out1 = transpose328_out1
.mul((constant687_out1.clone()).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where67_out1 = mul176_out1
.mask_fill(unsqueeze31_out1.clone(), constant450_out1);
let (attention23_out1,) = {
let q = transpose324_out1;
let k = transpose322_out1;
let v = transpose323_out1;
let score_bias = where67_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention23_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention23_out1 = {
let dims = attention23_out1.dims();
attention23_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention23_out1,)
};
let where68_out1 = attention23_out1
.mask_fill(expand15_out1.clone(), constant453_out1);
let transpose329_out1 = where68_out1.permute([0, 2, 1, 3]);
let reshape162_out1 = transpose329_out1.reshape([1, -1, 1024]);
let linear210_out1 = self.linear210.forward(reshape162_out1);
let add157_out1 = add154_out1.add(linear210_out1);
let layernormalization135_out1 = {
let dtype = add157_out1.clone().dtype();
self.layernormalization135
.forward(add157_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze46_out1 = self.squeeze46.val();
let transpose330_out1 = squeeze46_out1.permute([1, 0]);
let matmul278_out1 = layernormalization135_out1
.matmul(transpose330_out1.unsqueeze::<3usize>());
let split_tensors = matmul278_out1.split_with_sizes([1024, 1024].into(), 2);
let [split23_out1, split23_out2] = split_tensors.try_into().unwrap();
let sigmoid90_out1 = burn::tensor::activation::sigmoid(split23_out2);
let mul177_out1 = split23_out1.mul(sigmoid90_out1);
let transpose331_out1 = mul177_out1.permute([0, 2, 1]);
let where69_out1 = transpose331_out1
.mask_fill(unsqueeze33_out1.clone(), constant453_out1);
let pad46_out1 = where69_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat84_out1 = burn::tensor::Tensor::cat(
[gather46_out1, pad46_out1].into(),
2,
);
let slice98_out1 = concat84_out1.clone().slice(s![.., .., - 8..]);
let conv1d23_out1 = self.conv1d23.forward(concat84_out1);
let transpose332_out1 = conv1d23_out1.permute([0, 2, 1]);
let layernormalization136_out1 = {
let dtype = transpose332_out1.dtype();
self.layernormalization136
.forward(transpose332_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid91_out1 = burn::tensor::activation::sigmoid(
layernormalization136_out1.clone(),
);
let mul178_out1 = layernormalization136_out1.mul(sigmoid91_out1);
let squeeze47_out1 = self.squeeze47.val();
let transpose333_out1 = squeeze47_out1.permute([1, 0]);
let matmul279_out1 = mul178_out1.matmul(transpose333_out1.unsqueeze::<3usize>());
let add158_out1 = add157_out1.add(matmul279_out1);
let layernormalization137_out1 = {
let dtype = add158_out1.clone().dtype();
self.layernormalization137
.forward(add158_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear211_out1 = self.linear211.forward(layernormalization137_out1);
let sigmoid92_out1 = burn::tensor::activation::sigmoid(linear211_out1.clone());
let mul179_out1 = linear211_out1.mul(sigmoid92_out1);
let linear212_out1 = self.linear212.forward(mul179_out1);
let mul180_out1 = linear212_out1
.mul((constant684_out1.clone()).unsqueeze_dims(&[0isize, 1isize]));
let add159_out1 = add158_out1.add(mul180_out1);
let layernormalization138_out1 = {
let dtype = add159_out1.dtype();
self.layernormalization138
.forward(add159_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let gather47_out1 = {
let sliced = transpose1_out1.slice(s![23, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let gather48_out1 = {
let sliced = transpose2_out1.slice(s![23, .., .., ..]);
sliced.squeeze_dim::<3usize>(0)
};
let layernormalization139_out1 = {
let dtype = layernormalization138_out1.clone().dtype();
self.layernormalization139
.forward(
layernormalization138_out1.clone().cast(burn::tensor::DType::F32),
)
.cast(dtype)
};
let linear213_out1 = self.linear213.forward(layernormalization139_out1);
let sigmoid93_out1 = burn::tensor::activation::sigmoid(linear213_out1.clone());
let mul181_out1 = linear213_out1.mul(sigmoid93_out1);
let linear214_out1 = self.linear214.forward(mul181_out1);
let mul182_out1 = linear214_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add160_out1 = layernormalization138_out1.add(mul182_out1);
let layernormalization140_out1 = {
let dtype = add160_out1.clone().dtype();
self.layernormalization140
.forward(add160_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let concat85_out1 = burn::tensor::Tensor::cat(
[gather47_out1.clone(), layernormalization140_out1.clone()].into(),
1,
);
let transpose334_out1 = gather47_out1.permute([1, 0, 2]);
let slice99_out1 = transpose334_out1
.slice(s![unsqueeze29_out1[0]..9223372036854775807, .., ..]);
let transpose335_out1 = slice99_out1.permute([1, 0, 2]);
let concat86_out1 = burn::tensor::Tensor::cat(
[transpose335_out1, layernormalization140_out1.clone()].into(),
1,
);
let linear215_out1 = self.linear215.forward(layernormalization140_out1);
let reshape163_out1 = linear215_out1.reshape([1, -1, 8, 128]);
let linear216_out1 = self.linear216.forward(concat85_out1.clone());
let reshape164_out1 = linear216_out1.reshape([1, -1, 8, 128]);
let linear217_out1 = self.linear217.forward(concat85_out1);
let reshape165_out1 = linear217_out1.reshape([1, -1, 8, 128]);
let transpose336_out1 = reshape164_out1.permute([0, 2, 1, 3]);
let transpose337_out1 = reshape165_out1.permute([0, 2, 1, 3]);
let linear218_out1 = self.linear218.forward(transpose6_out1);
let reshape166_out1 = linear218_out1.reshape([1, -1, 8, 128]);
let constant414_out1 = self.constant414.val();
let add161_out1 = reshape163_out1
.clone()
.add((constant414_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose338_out1 = add161_out1.permute([0, 2, 1, 3]);
let constant415_out1 = self.constant415.val();
let add162_out1 = reshape163_out1
.add((constant415_out1).unsqueeze_dims(&[0isize, 1isize]));
let transpose339_out1 = add162_out1.permute([0, 2, 1, 3]);
let transpose340_out1 = reshape166_out1.permute([0, 2, 3, 1]);
let matmul288_out1 = transpose339_out1.matmul(transpose340_out1);
let pad47_out1 = matmul288_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize), (1usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let reshape167_out1 = pad47_out1.reshape(concat16_out1);
let slice100_out1 = reshape167_out1.slice(s![.., .., 1.., ..]);
let reshape168_out1 = slice100_out1.reshape(concat17_out1);
let transpose341_out1 = reshape168_out1.permute([3, 0, 1, 2]);
let slice101_out1 = transpose341_out1
.slice(s![0..unsqueeze19_out1[0], .., .., ..]);
let transpose342_out1 = slice101_out1.permute([1, 2, 3, 0]);
let mul183_out1 = transpose342_out1
.mul((constant687_out1).unsqueeze_dims(&[0isize, 1isize, 2isize]));
let where70_out1 = mul183_out1.mask_fill(unsqueeze31_out1, constant450_out1);
let (attention24_out1,) = {
let q = transpose338_out1;
let k = transpose336_out1;
let v = transpose337_out1;
let score_bias = where70_out1;
let hidden_rows = score_bias
.clone()
.max_dim(3)
.equal_elem(f32::NEG_INFINITY);
let attention24_out1 = burn::tensor::module::attention(
q,
k,
v,
None,
Some(score_bias),
burn::tensor::ops::AttentionModuleOptions {
scale: None,
softcap: None,
is_causal: false,
},
);
let attention24_out1 = {
let dims = attention24_out1.dims();
attention24_out1.mask_fill(hidden_rows.expand(dims), 0.0)
};
(attention24_out1,)
};
let where71_out1 = attention24_out1.mask_fill(expand15_out1, constant453_out1);
let transpose343_out1 = where71_out1.permute([0, 2, 1, 3]);
let reshape169_out1 = transpose343_out1.reshape([1, -1, 1024]);
let linear219_out1 = self.linear219.forward(reshape169_out1);
let add163_out1 = add160_out1.add(linear219_out1);
let layernormalization141_out1 = {
let dtype = add163_out1.clone().dtype();
self.layernormalization141
.forward(add163_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let squeeze48_out1 = self.squeeze48.val();
let transpose344_out1 = squeeze48_out1.permute([1, 0]);
let matmul290_out1 = layernormalization141_out1
.matmul(transpose344_out1.unsqueeze::<3usize>());
let split_tensors = matmul290_out1.split_with_sizes([1024, 1024].into(), 2);
let [split24_out1, split24_out2] = split_tensors.try_into().unwrap();
let sigmoid94_out1 = burn::tensor::activation::sigmoid(split24_out2);
let mul184_out1 = split24_out1.mul(sigmoid94_out1);
let transpose345_out1 = mul184_out1.permute([0, 2, 1]);
let where72_out1 = transpose345_out1
.mask_fill(unsqueeze33_out1, constant453_out1);
let pad48_out1 = where72_out1
.pad(
[(0usize, 0usize), (0usize, 0usize), (0usize, 0usize)],
burn::tensor::ops::PadMode::Constant(0f32),
);
let concat87_out1 = burn::tensor::Tensor::cat(
[gather48_out1, pad48_out1].into(),
2,
);
(
concat87_out1,
add163_out1,
concat80_out1,
concat83_out1,
concat86_out1,
slice90_out1,
slice94_out1,
slice98_out1,
)
}
}
#[derive(Module, Debug)]
pub struct Submodule25 {
conv1d24: Conv1d,
layernormalization142: LayerNorm,
squeeze49: burn::module::Param<Tensor<2>>,
layernormalization143: LayerNorm,
linear220: Linear,
linear221: Linear,
layernormalization144: LayerNorm,
#[module(skip)]
device: Device,
}
impl Submodule25 {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let conv1d24 = Conv1dConfig::new(1024, 1024, 9)
.with_stride(1)
.with_padding(PaddingConfig1d::Valid)
.with_dilation(1)
.with_groups(1024)
.with_bias(false)
.init(device);
let layernormalization142 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let squeeze49: burn::module::Param<Tensor<2>> = burn::module::Param::uninitialized(
burn::module::ParamId::new(),
move |device, _require_grad| Tensor::<
2,
>::zeros([1024, 1024], (device, burn::tensor::DType::F32)),
device.clone(),
false,
[1024, 1024].into(),
);
let layernormalization143 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
let linear220 = LinearConfig::new(1024, 4096).with_bias(false).init(device);
let linear221 = LinearConfig::new(4096, 1024).with_bias(false).init(device);
let layernormalization144 = LayerNormConfig::new(1024)
.with_epsilon(0.000009999999747378752f64)
.with_bias(true)
.init(device);
Self {
conv1d24,
layernormalization142,
squeeze49,
layernormalization143,
linear220,
linear221,
layernormalization144,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
concat87_out1: Tensor<3>,
add163_out1: Tensor<3>,
constant684_out1: Tensor<1>,
concat15_out1: Tensor<3>,
concat20_out1: Tensor<3>,
concat23_out1: Tensor<3>,
concat26_out1: Tensor<3>,
concat29_out1: Tensor<3>,
concat32_out1: Tensor<3>,
concat35_out1: Tensor<3>,
concat38_out1: Tensor<3>,
concat41_out1: Tensor<3>,
concat44_out1: Tensor<3>,
concat47_out1: Tensor<3>,
concat50_out1: Tensor<3>,
concat53_out1: Tensor<3>,
concat56_out1: Tensor<3>,
concat59_out1: Tensor<3>,
concat62_out1: Tensor<3>,
concat65_out1: Tensor<3>,
concat68_out1: Tensor<3>,
concat71_out1: Tensor<3>,
concat74_out1: Tensor<3>,
concat77_out1: Tensor<3>,
concat80_out1: Tensor<3>,
concat83_out1: Tensor<3>,
concat86_out1: Tensor<3>,
slice10_out1: Tensor<3>,
slice14_out1: Tensor<3>,
slice18_out1: Tensor<3>,
slice22_out1: Tensor<3>,
slice26_out1: Tensor<3>,
slice30_out1: Tensor<3>,
slice34_out1: Tensor<3>,
slice38_out1: Tensor<3>,
slice42_out1: Tensor<3>,
slice46_out1: Tensor<3>,
slice50_out1: Tensor<3>,
slice54_out1: Tensor<3>,
slice58_out1: Tensor<3>,
slice62_out1: Tensor<3>,
slice66_out1: Tensor<3>,
slice70_out1: Tensor<3>,
slice74_out1: Tensor<3>,
slice78_out1: Tensor<3>,
slice82_out1: Tensor<3>,
slice86_out1: Tensor<3>,
slice90_out1: Tensor<3>,
slice94_out1: Tensor<3>,
slice98_out1: Tensor<3>,
cache_last_channel_len: Tensor<1, Int>,
max2_out1: i64,
clip1_out1: Tensor<1, Int>,
) -> (Tensor<3>, Tensor<1, Int>, Tensor<4>, Tensor<4>, Tensor<1, Int>) {
let slice102_out1 = concat87_out1.clone().slice(s![.., .., - 8..]);
let conv1d24_out1 = self.conv1d24.forward(concat87_out1);
let transpose346_out1 = conv1d24_out1.permute([0, 2, 1]);
let layernormalization142_out1 = {
let dtype = transpose346_out1.dtype();
self.layernormalization142
.forward(transpose346_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let sigmoid95_out1 = burn::tensor::activation::sigmoid(
layernormalization142_out1.clone(),
);
let mul185_out1 = layernormalization142_out1.mul(sigmoid95_out1);
let squeeze49_out1 = self.squeeze49.val();
let transpose347_out1 = squeeze49_out1.permute([1, 0]);
let matmul291_out1 = mul185_out1.matmul(transpose347_out1.unsqueeze::<3usize>());
let add164_out1 = add163_out1.add(matmul291_out1);
let layernormalization143_out1 = {
let dtype = add164_out1.clone().dtype();
self.layernormalization143
.forward(add164_out1.clone().cast(burn::tensor::DType::F32))
.cast(dtype)
};
let linear220_out1 = self.linear220.forward(layernormalization143_out1);
let sigmoid96_out1 = burn::tensor::activation::sigmoid(linear220_out1.clone());
let mul186_out1 = linear220_out1.mul(sigmoid96_out1);
let linear221_out1 = self.linear221.forward(mul186_out1);
let mul187_out1 = linear221_out1
.mul((constant684_out1).unsqueeze_dims(&[0isize, 1isize]));
let add165_out1 = add164_out1.add(mul187_out1);
let layernormalization144_out1 = {
let dtype = add165_out1.dtype();
self.layernormalization144
.forward(add165_out1.cast(burn::tensor::DType::F32))
.cast(dtype)
};
let transpose348_out1 = layernormalization144_out1.permute([0, 2, 1]);
let unsqueeze34_out1: Tensor<4> = concat15_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze35_out1: Tensor<4> = concat20_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze36_out1: Tensor<4> = concat23_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze37_out1: Tensor<4> = concat26_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze38_out1: Tensor<4> = concat29_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze39_out1: Tensor<4> = concat32_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze40_out1: Tensor<4> = concat35_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze41_out1: Tensor<4> = concat38_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze42_out1: Tensor<4> = concat41_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze43_out1: Tensor<4> = concat44_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze44_out1: Tensor<4> = concat47_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze45_out1: Tensor<4> = concat50_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze46_out1: Tensor<4> = concat53_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze47_out1: Tensor<4> = concat56_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze48_out1: Tensor<4> = concat59_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze49_out1: Tensor<4> = concat62_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze50_out1: Tensor<4> = concat65_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze51_out1: Tensor<4> = concat68_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze52_out1: Tensor<4> = concat71_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze53_out1: Tensor<4> = concat74_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze54_out1: Tensor<4> = concat77_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze55_out1: Tensor<4> = concat80_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze56_out1: Tensor<4> = concat83_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze57_out1: Tensor<4> = concat86_out1.unsqueeze_dims::<4>(&[0]);
let concat88_out1 = burn::tensor::Tensor::cat(
[
unsqueeze34_out1,
unsqueeze35_out1,
unsqueeze36_out1,
unsqueeze37_out1,
unsqueeze38_out1,
unsqueeze39_out1,
unsqueeze40_out1,
unsqueeze41_out1,
unsqueeze42_out1,
unsqueeze43_out1,
unsqueeze44_out1,
unsqueeze45_out1,
unsqueeze46_out1,
unsqueeze47_out1,
unsqueeze48_out1,
unsqueeze49_out1,
unsqueeze50_out1,
unsqueeze51_out1,
unsqueeze52_out1,
unsqueeze53_out1,
unsqueeze54_out1,
unsqueeze55_out1,
unsqueeze56_out1,
unsqueeze57_out1,
]
.into(),
0,
);
let unsqueeze58_out1: Tensor<4> = slice10_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze59_out1: Tensor<4> = slice14_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze60_out1: Tensor<4> = slice18_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze61_out1: Tensor<4> = slice22_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze62_out1: Tensor<4> = slice26_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze63_out1: Tensor<4> = slice30_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze64_out1: Tensor<4> = slice34_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze65_out1: Tensor<4> = slice38_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze66_out1: Tensor<4> = slice42_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze67_out1: Tensor<4> = slice46_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze68_out1: Tensor<4> = slice50_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze69_out1: Tensor<4> = slice54_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze70_out1: Tensor<4> = slice58_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze71_out1: Tensor<4> = slice62_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze72_out1: Tensor<4> = slice66_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze73_out1: Tensor<4> = slice70_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze74_out1: Tensor<4> = slice74_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze75_out1: Tensor<4> = slice78_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze76_out1: Tensor<4> = slice82_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze77_out1: Tensor<4> = slice86_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze78_out1: Tensor<4> = slice90_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze79_out1: Tensor<4> = slice94_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze80_out1: Tensor<4> = slice98_out1.unsqueeze_dims::<4>(&[0]);
let unsqueeze81_out1: Tensor<4> = slice102_out1.unsqueeze_dims::<4>(&[0]);
let concat89_out1 = burn::tensor::Tensor::cat(
[
unsqueeze58_out1,
unsqueeze59_out1,
unsqueeze60_out1,
unsqueeze61_out1,
unsqueeze62_out1,
unsqueeze63_out1,
unsqueeze64_out1,
unsqueeze65_out1,
unsqueeze66_out1,
unsqueeze67_out1,
unsqueeze68_out1,
unsqueeze69_out1,
unsqueeze70_out1,
unsqueeze71_out1,
unsqueeze72_out1,
unsqueeze73_out1,
unsqueeze74_out1,
unsqueeze75_out1,
unsqueeze76_out1,
unsqueeze77_out1,
unsqueeze78_out1,
unsqueeze79_out1,
unsqueeze80_out1,
unsqueeze81_out1,
]
.into(),
0,
);
let add166_out1 = cache_last_channel_len.add_scalar(max2_out1);
let clip2_out1 = add166_out1.clamp_max(70f64);
let slice103_out1 = concat88_out1.slice(s![.., .., - 70.., ..]);
let slice104_out1 = transpose348_out1.slice(s![.., .., 0..14]);
let clip3_out1 = clip1_out1.clamp_max(14f64);
let transpose349_out1 = slice103_out1.permute([1, 0, 2, 3]);
let transpose350_out1 = concat89_out1.permute([1, 0, 2, 3]);
(slice104_out1, clip3_out1, transpose349_out1, transpose350_out1, clip2_out1)
}
}
#[derive(Module, Debug)]
pub struct Model {
submodule1: Submodule1,
submodule2: Submodule2,
submodule3: Submodule3,
submodule4: Submodule4,
submodule5: Submodule5,
submodule6: Submodule6,
submodule7: Submodule7,
submodule8: Submodule8,
submodule9: Submodule9,
submodule10: Submodule10,
submodule11: Submodule11,
submodule12: Submodule12,
submodule13: Submodule13,
submodule14: Submodule14,
submodule15: Submodule15,
submodule16: Submodule16,
submodule17: Submodule17,
submodule18: Submodule18,
submodule19: Submodule19,
submodule20: Submodule20,
submodule21: Submodule21,
submodule22: Submodule22,
submodule23: Submodule23,
submodule24: Submodule24,
submodule25: Submodule25,
#[module(skip)]
device: Device,
}
impl Model {
#[allow(unused_variables)]
pub fn new(device: &Device) -> Self {
let submodule1 = Submodule1::new(device);
let submodule2 = Submodule2::new(device);
let submodule3 = Submodule3::new(device);
let submodule4 = Submodule4::new(device);
let submodule5 = Submodule5::new(device);
let submodule6 = Submodule6::new(device);
let submodule7 = Submodule7::new(device);
let submodule8 = Submodule8::new(device);
let submodule9 = Submodule9::new(device);
let submodule10 = Submodule10::new(device);
let submodule11 = Submodule11::new(device);
let submodule12 = Submodule12::new(device);
let submodule13 = Submodule13::new(device);
let submodule14 = Submodule14::new(device);
let submodule15 = Submodule15::new(device);
let submodule16 = Submodule16::new(device);
let submodule17 = Submodule17::new(device);
let submodule18 = Submodule18::new(device);
let submodule19 = Submodule19::new(device);
let submodule20 = Submodule20::new(device);
let submodule21 = Submodule21::new(device);
let submodule22 = Submodule22::new(device);
let submodule23 = Submodule23::new(device);
let submodule24 = Submodule24::new(device);
let submodule25 = Submodule25::new(device);
Self {
submodule1,
submodule2,
submodule3,
submodule4,
submodule5,
submodule6,
submodule7,
submodule8,
submodule9,
submodule10,
submodule11,
submodule12,
submodule13,
submodule14,
submodule15,
submodule16,
submodule17,
submodule18,
submodule19,
submodule20,
submodule21,
submodule22,
submodule23,
submodule24,
submodule25,
device: device.clone(),
}
}
#[allow(clippy::let_and_return, clippy::approx_constant)]
pub fn forward(
&self,
processed_signal: Tensor<3>,
processed_signal_length: Tensor<1, Int>,
cache_last_channel: Tensor<4>,
cache_last_time: Tensor<4>,
cache_last_channel_len: Tensor<1, Int>,
spk_targets: Tensor<2>,
bg_spk_targets: Tensor<2>,
) -> (Tensor<3>, Tensor<1, Int>, Tensor<4>, Tensor<4>, Tensor<1, Int>) {
let (
sub7_out1,
max2_out1,
add6_out1,
constant431_out1,
constant427_out1,
transpose1_out1,
transpose2_out1,
slice1_out1,
) = self
.submodule1
.forward(
processed_signal,
cache_last_channel,
cache_last_time,
processed_signal_length,
);
let (
add21_out1,
gather1_out1,
transpose6_out1,
unsqueeze19_out1,
slice4_out1,
slice3_out1,
gather2_out1,
clip1_out1,
) = self
.submodule2
.forward(
sub7_out1,
max2_out1.clone(),
cache_last_channel_len.clone(),
add6_out1.clone(),
constant431_out1.clone(),
constant427_out1,
transpose1_out1.clone(),
transpose2_out1.clone(),
spk_targets,
slice1_out1,
bg_spk_targets,
);
let (
concat18_out1,
add25_out1,
constant684_out1,
unsqueeze29_out1,
concat16_out1,
concat17_out1,
constant687_out1,
unsqueeze31_out1,
constant450_out1,
expand15_out1,
constant453_out1,
unsqueeze33_out1,
concat15_out1,
) = self
.submodule3
.forward(
add21_out1,
gather1_out1,
max2_out1.clone(),
transpose6_out1.clone(),
constant431_out1,
add6_out1,
unsqueeze19_out1.clone(),
slice4_out1,
slice3_out1,
gather2_out1,
);
let (add31_out1, gather4_out1, concat20_out1, slice10_out1) = self
.submodule4
.forward(
concat18_out1,
add25_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
constant453_out1.clone(),
);
let (add37_out1, gather6_out1, concat23_out1, slice14_out1) = self
.submodule5
.forward(
add31_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather4_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add43_out1, gather8_out1, concat26_out1, slice18_out1) = self
.submodule6
.forward(
add37_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather6_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add49_out1, gather10_out1, concat29_out1, slice22_out1) = self
.submodule7
.forward(
add43_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather8_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add55_out1, gather12_out1, concat32_out1, slice26_out1) = self
.submodule8
.forward(
add49_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather10_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add61_out1, gather14_out1, concat35_out1, slice30_out1) = self
.submodule9
.forward(
add55_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather12_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add67_out1, gather16_out1, concat38_out1, slice34_out1) = self
.submodule10
.forward(
add61_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather14_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add73_out1, gather18_out1, concat41_out1, slice38_out1) = self
.submodule11
.forward(
add67_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather16_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add79_out1, gather20_out1, concat44_out1, slice42_out1) = self
.submodule12
.forward(
add73_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather18_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add85_out1, gather22_out1, concat47_out1, slice46_out1) = self
.submodule13
.forward(
add79_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather20_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add91_out1, gather24_out1, concat50_out1, slice50_out1) = self
.submodule14
.forward(
add85_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather22_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add97_out1, gather26_out1, concat53_out1, slice54_out1) = self
.submodule15
.forward(
add91_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather24_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add103_out1, gather28_out1, concat56_out1, slice58_out1) = self
.submodule16
.forward(
add97_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather26_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add109_out1, gather30_out1, concat59_out1, slice62_out1) = self
.submodule17
.forward(
add103_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather28_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add115_out1, gather32_out1, concat62_out1, slice66_out1) = self
.submodule18
.forward(
add109_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather30_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add121_out1, gather34_out1, concat65_out1, slice70_out1) = self
.submodule19
.forward(
add115_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather32_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add127_out1, gather36_out1, concat68_out1, slice74_out1) = self
.submodule20
.forward(
add121_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather34_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add133_out1, gather38_out1, concat71_out1, slice78_out1) = self
.submodule21
.forward(
add127_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather36_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add139_out1, gather40_out1, concat74_out1, slice82_out1) = self
.submodule22
.forward(
add133_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather38_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (add145_out1, gather42_out1, concat77_out1, slice86_out1) = self
.submodule23
.forward(
add139_out1,
unsqueeze33_out1.clone(),
constant453_out1.clone(),
gather40_out1,
constant684_out1.clone(),
transpose1_out1.clone(),
transpose2_out1.clone(),
unsqueeze29_out1.clone(),
transpose6_out1.clone(),
concat16_out1.clone(),
concat17_out1.clone(),
unsqueeze19_out1.clone(),
constant687_out1.clone(),
unsqueeze31_out1.clone(),
constant450_out1.clone(),
expand15_out1.clone(),
);
let (
concat87_out1,
add163_out1,
concat80_out1,
concat83_out1,
concat86_out1,
slice90_out1,
slice94_out1,
slice98_out1,
) = self
.submodule24
.forward(
add145_out1,
unsqueeze33_out1,
constant453_out1,
gather42_out1,
constant684_out1.clone(),
transpose1_out1,
transpose2_out1,
unsqueeze29_out1,
transpose6_out1,
concat16_out1,
concat17_out1,
unsqueeze19_out1,
constant687_out1,
unsqueeze31_out1,
constant450_out1,
expand15_out1,
);
let (
slice104_out1,
clip3_out1,
transpose349_out1,
transpose350_out1,
clip2_out1,
) = self
.submodule25
.forward(
concat87_out1,
add163_out1,
constant684_out1,
concat15_out1,
concat20_out1,
concat23_out1,
concat26_out1,
concat29_out1,
concat32_out1,
concat35_out1,
concat38_out1,
concat41_out1,
concat44_out1,
concat47_out1,
concat50_out1,
concat53_out1,
concat56_out1,
concat59_out1,
concat62_out1,
concat65_out1,
concat68_out1,
concat71_out1,
concat74_out1,
concat77_out1,
concat80_out1,
concat83_out1,
concat86_out1,
slice10_out1,
slice14_out1,
slice18_out1,
slice22_out1,
slice26_out1,
slice30_out1,
slice34_out1,
slice38_out1,
slice42_out1,
slice46_out1,
slice50_out1,
slice54_out1,
slice58_out1,
slice62_out1,
slice66_out1,
slice70_out1,
slice74_out1,
slice78_out1,
slice82_out1,
slice86_out1,
slice90_out1,
slice94_out1,
slice98_out1,
cache_last_channel_len,
max2_out1,
clip1_out1,
);
(slice104_out1, clip3_out1, transpose349_out1, transpose350_out1, clip2_out1)
}
}