Một mã hóa nóng trong tenorflow là gì?


12

Tôi hiện đang thực hiện một khóa học về tenorflow trong đó họ đã sử dụng tf.one_hot (chỉ số, độ sâu). Bây giờ tôi không hiểu làm thế nào các chỉ số này thay đổi thành chuỗi nhị phân đó.

Ai đó có thể vui lòng giải thích cho tôi quá trình chính xác ???

Câu trả lời:


16

Giả sử bạn có một tính năng phân loại trong tập dữ liệu của bạn (ví dụ: màu). Và mẫu của bạn có thể có màu đỏ, vàng hoặc xanh. Để truyền đối số này cho thuật toán ML, trước tiên bạn cần mã hóa nó để thay vì các chuỗi bạn có số.

Cách dễ nhất để làm một việc như vậy là tạo một ánh xạ trong đó:

đỏ -> 1
vàng -> 2
xanh -> 3

và thay thế mỗi chuỗi bằng giá trị ánh xạ của nó.

Tuy nhiên, điều này có thể tạo ra tác dụng phụ không mong muốn trong mô hình ML của chúng tôi vì khi xử lý các số có thể nghĩ rằng màu xanh> vàng (vì 3> 2) hoặc màu đỏ + vàng = xanh (vì 1 + 2 = 3). Mô hình không có cách nào để biết rằng những dữ liệu này được phân loại và sau đó được ánh xạ dưới dạng số nguyên.

Giải pháp cho vấn đề này là mã hóa một nóng trong đó chúng tôi tạo N tính năng mới , trong đó N là số lượng giá trị duy nhất trong tính năng gốc. Trong exampel N của chúng tôi sẽ bằng 3, vì chúng tôi có 3 màu độc đáo (đỏ, vàng và xanh).

Mỗi tính năng này là nhị phân và sẽ tương ứng với một trong những giá trị duy nhất này. Trong ví dụ của chúng tôi, tính năng đầu tiên sẽ là một tính năng nhị phân cho chúng tôi biết mẫu đó có màu đỏ hay không, thứ hai sẽ giống với màu vàng và thứ ba là màu xanh.

Một ví dụ về chuyển đổi như vậy được minh họa dưới đây:

Lưu ý rằng vì cách tiếp cận này làm tăng tính chiều của tập dữ liệu, nếu chúng tôi có một tính năng có nhiều giá trị duy nhất, chúng tôi có thể muốn sử dụng mã hóa thưa thớt hơn (như cách tôi đã trình bày ở trên).


3

độ sâu: Một vô hướng xác định độ sâu của một chiều nóng.

chỉ số: Một thang đo của các chỉ số.

Đây là ví dụ được đưa ra trong tài liệu tenorflow.
1. Chỉ chỉ định các chỉ số và độ sâu (Giá trị mặc định của on_value là 1 và off_value là 0)

 indices = [0, 1, 2]
    depth = 3
    tf.one_hot(indices, depth)  # output: [3 x 3]
    # [[1., 0., 0.],
    #  [0., 1., 0.],
    #  [0., 0., 1.]]
  1. Chỉ định on_value và off_value
chỉ số = [0, 2, -1, 1]
độ sâu = 3
tf.one_hot (chỉ số, độ sâu, on_value = 5.0, off_value = 0.0, trục = -1)
## đầu ra: [4 x 3]
    # [[5.0, 0.0, 0.0], # one_hot (0)
    # [0,0, 0,0, 5.0], # one_hot (2)
    # [0,0, 0,0, 0,0], # one_hot (-1)
    # [0.0, 5.0, 0.0]] # one_hot (1)

Bạn cũng có thể xem mã trên GitHub


Tài liệu tf dễ hiểu hơn: tenorflow.org/api_docs/python/tf/one_hot
dturvene
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.