Untitled

 avatar
unknown
plain_text
a year ago
1.8 kB
6
Indexable
 def run(self, x):
        return nn.DotProduct(self.w, x)
// Nhân ma trận
Sử dụng phương thức DotProduct có sẵn trong file nn.py dùng để nhân
Inputs:
        features: Ma trận m x n kích thước (batch_size x num_features)
        weight: Ma trận kích thước (1 x )
    Output: Ma trận kích thước (num_features x 1)

get_prediction(self, x)
      return 1 if nn.as_scalar(self.run(x)) >= 0 else -1

// Trả về 1 nếu tích chấm không âm hoặc −1 ngược lại
phương thức nn.as_scalar để chuyển đổi ma trận vô hướng thành số dấu phẩy động Python

train(self)
        n_step = 1000
        for _ in range(n_step):
            for x, y in dataset.iterate_once(1):
                if self.get_prediction(x) != nn.as_scalar(y):
                    self.get_weights().update(x, nn.as_scalar(y))

//Hàm này sẽ lặp lại tập dữ liệu và cập nhật các mẫu bị phân loại sai. Sử dụng phương thức update của nn.Parameter để cập nhật trọng số.
, cách thay đổi giá trị của một tham số là gọi parameter.update(direction, multiplier), cách này sẽ thực hiện cập nhật các trọng số:
weights←weights+direction⋅multiplier
Đối số direction là 1 ma trận có cùng hình dạng với parameter và đối số multiplier sử dụng phương thức as_scala 
Ngoài ra, sử dụng iterate_once để lặp lại tập dữ liệu
Khi toàn bộ quá trình truyền qua tập dữ liệu được hoàn thành mà không mắc bất kỳ sai sót nào
(self.get_prediction(x) = nn.as_scalar(y)), 
thì việc huấn luyện đã đạt được độ chính xác 100% và quá trình huấn luyện có thể chấm dứt.