CoderCastrov logo
CoderCastrov
II — Модель
просмотров
1 мин чтение
#Машинное обучение
Table Of Content

    Вот изображение, описывающее модель для лучшего понимания.

    Модель

    Одна вещь, которую следует учесть здесь, заключается в том, что мы используем вероятностное распределение слов в виде индексов. Это означает, что даже если наш набор даст хорошие результаты, набор данных все равно может потребовать расширения для разных слов.

    module PredictValue::Model
      class GLocalNet < Torch::NN::Module
        def initialize(vocab_size, embed_dim, num_class)
          super()
          @embedding = Torch::NN::EmbeddingBag.new(vocab_size, embed_dim, sparse: true)
          @fc = Torch::NN::Linear.new(embed_dim, num_class)
          init_weights
        end
        
        def init_weights
          initrange = 0.5
          @embedding.weight.data.uniform!(-initrange, initrange)
          @fc.weight.data.uniform!(-initrange, initrange)
          @fc.bias.data.zero!
        end
        
        def forward(text, offsets)
          embedded = @embedding.call(text, offsets: offsets)
          @fc.call(embedded)
        end
      end
    end

    Как видно из приведенного выше кода, мы будем передавать вложения в линейный слой. Веса будут перераспределены на каждой эпохе, чтобы дать нам лучшие результаты. Фактически, это линейная регрессия с тензорами в своей сущности.