using System; using TorchSharp; public class AutoencoderKL : IDisposable { private torch.jit.ScriptModule _model; private readonly float _scale; public torch.Device Device {get;} public AutoencoderKL(string modelPath, torch.Device device, float scale = 0.18215f) { _model = TorchSharp.torch.jit.load(modelPath); Device = device; _model.to(Device); _model.eval(); _scale = scale; } public torch.Tensor Forward(torch.Tensor tokenTensor) { var context = torch.enable_grad(false); tokenTensor = 1.0f / _scale * tokenTensor; return (torch.Tensor)_model.forward(tokenTensor); } public void Dispose() { _model.Dispose(); _model = null; } }