Làm thế nào để bạn che dấu một giá trị trong python?

Tạo mặt nạ là một cách để thông báo cho các lớp xử lý trình tự biết rằng các dấu thời gian nhất định trong đầu vào bị thiếu và do đó nên bỏ qua khi xử lý dữ liệu

Đệm là một hình thức che dấu đặc biệt trong đó các bước che dấu ở đầu hoặc cuối chuỗi. Đệm xuất phát từ nhu cầu mã hóa dữ liệu chuỗi thành các lô liền kề. để làm cho tất cả các trình tự trong một lô phù hợp với độ dài tiêu chuẩn nhất định, cần phải đệm hoặc cắt bớt một số trình tự

Chúng ta hãy xem xét kỹ

Dữ liệu trình tự đệm

Khi xử lý dữ liệu trình tự, các mẫu riêng lẻ thường có độ dài khác nhau. Xem xét ví dụ sau [văn bản được mã hóa dưới dạng từ]

[
  ["Hello", "world", "!"],
  ["How", "are", "you", "doing", "today"],
  ["The", "weather", "will", "be", "nice", "tomorrow"],
]

Sau khi tra cứu từ vựng, dữ liệu có thể được vector hóa thành số nguyên, e. g

[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]

Dữ liệu là một danh sách lồng nhau trong đó các mẫu riêng lẻ có độ dài lần lượt là 3, 5 và 6. Vì dữ liệu đầu vào cho một mô hình học sâu phải là một tensor đơn [có dạng e. g.

[
  ["Hello", "world", "!"],
  ["How", "are", "you", "doing", "today"],
  ["The", "weather", "will", "be", "nice", "tomorrow"],
]
9 trong trường hợp này], các mẫu ngắn hơn mục dài nhất cần được đệm bằng một số giá trị giữ chỗ [cách khác, người ta cũng có thể cắt ngắn các mẫu dài trước khi đệm các mẫu ngắn]

Keras cung cấp một chức năng tiện ích để cắt bớt và đệm các danh sách Python theo độ dài chung.

[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
0

raw_inputs = [
    [711, 632, 71],
    [73, 8, 3215, 55, 927],
    [83, 91, 1, 645, 1253, 927],
]

# By default, this will pad using 0s; it is configurable via the
# "value" parameter.
# Note that you could "pre" padding [at the beginning] or
# "post" padding [at the end].
# We recommend using "post" padding when working with RNN layers
# [in order to be able to use the
# CuDNN implementation of the layers].
padded_inputs = tf.keras.preprocessing.sequence.pad_sequences[
    raw_inputs, padding="post"
]
print[padded_inputs]
[[ 711  632   71    0    0    0]
 [  73    8 3215   55  927    0]
 [  83   91    1  645 1253  927]]

đắp mặt nạ

Bây giờ tất cả các mẫu đều có độ dài đồng nhất, mô hình phải được thông báo rằng một phần dữ liệu thực sự là phần đệm và nên được bỏ qua. Cơ chế đó đang che đậy

Có ba cách để giới thiệu mặt nạ đầu vào trong các mô hình Keras

  • Thêm một lớp
    [
      [71, 1331, 4231]
      [73, 8, 3215, 55, 927],
      [83, 91, 1, 645, 1253, 927],
    ]
    
    1
  • Định cấu hình lớp
    [
      [71, 1331, 4231]
      [73, 8, 3215, 55, 927],
      [83, 91, 1, 645, 1253, 927],
    ]
    
    2 với
    [
      [71, 1331, 4231]
      [73, 8, 3215, 55, 927],
      [83, 91, 1, 645, 1253, 927],
    ]
    
    3
  • Truyền đối số
    [
      [71, 1331, 4231]
      [73, 8, 3215, 55, 927],
      [83, 91, 1, 645, 1253, 927],
    ]
    
    4 theo cách thủ công khi gọi các lớp hỗ trợ đối số này [e. g. lớp RNN]

Lớp tạo mặt nạ.
[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
5 và
[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
6

Dưới mui xe, các lớp này sẽ tạo ra một tensor mặt nạ [tensor 2D có hình dạng

[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
7] và gắn nó vào đầu ra tensor được trả về bởi lớp
[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
6 hoặc
[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
5

[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
5
[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
6

Như bạn có thể thấy từ kết quả được in, mặt nạ là một tensor boolean 2D có hình dạng

raw_inputs = [
    [711, 632, 71],
    [73, 8, 3215, 55, 927],
    [83, 91, 1, 645, 1253, 927],
]

# By default, this will pad using 0s; it is configurable via the
# "value" parameter.
# Note that you could "pre" padding [at the beginning] or
# "post" padding [at the end].
# We recommend using "post" padding when working with RNN layers
# [in order to be able to use the
# CuDNN implementation of the layers].
padded_inputs = tf.keras.preprocessing.sequence.pad_sequences[
    raw_inputs, padding="post"
]
print[padded_inputs]
0, trong đó mỗi mục nhập
raw_inputs = [
    [711, 632, 71],
    [73, 8, 3215, 55, 927],
    [83, 91, 1, 645, 1253, 927],
]

# By default, this will pad using 0s; it is configurable via the
# "value" parameter.
# Note that you could "pre" padding [at the beginning] or
# "post" padding [at the end].
# We recommend using "post" padding when working with RNN layers
# [in order to be able to use the
# CuDNN implementation of the layers].
padded_inputs = tf.keras.preprocessing.sequence.pad_sequences[
    raw_inputs, padding="post"
]
print[padded_inputs]
1 riêng lẻ chỉ ra rằng nên bỏ qua dấu thời gian tương ứng trong quá trình xử lý

Tuyên truyền mặt nạ trong API chức năng và API tuần tự

Khi sử dụng API chức năng hoặc API tuần tự, mặt nạ được tạo bởi lớp

[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
5 hoặc
[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
6 sẽ được truyền qua mạng cho bất kỳ lớp nào có khả năng sử dụng chúng [ví dụ: lớp RNN]. Máy ảnh sẽ tự động tìm nạp mặt nạ tương ứng với đầu vào và chuyển nó tới bất kỳ lớp nào biết cách sử dụng nó

Chẳng hạn, trong mô hình Tuần tự sau đây, lớp

raw_inputs = [
    [711, 632, 71],
    [73, 8, 3215, 55, 927],
    [83, 91, 1, 645, 1253, 927],
]

# By default, this will pad using 0s; it is configurable via the
# "value" parameter.
# Note that you could "pre" padding [at the beginning] or
# "post" padding [at the end].
# We recommend using "post" padding when working with RNN layers
# [in order to be able to use the
# CuDNN implementation of the layers].
padded_inputs = tf.keras.preprocessing.sequence.pad_sequences[
    raw_inputs, padding="post"
]
print[padded_inputs]
4 sẽ tự động nhận mặt nạ, nghĩa là nó sẽ bỏ qua các giá trị đệm

[
  ["Hello", "world", "!"],
  ["How", "are", "you", "doing", "today"],
  ["The", "weather", "will", "be", "nice", "tomorrow"],
]
2

Đây cũng là trường hợp của mô hình API chức năng sau

[
  ["Hello", "world", "!"],
  ["How", "are", "you", "doing", "today"],
  ["The", "weather", "will", "be", "nice", "tomorrow"],
]
3

Truyền mặt nạ tensors trực tiếp cho các lớp

Các lớp có thể xử lý mặt nạ [chẳng hạn như lớp

raw_inputs = [
    [711, 632, 71],
    [73, 8, 3215, 55, 927],
    [83, 91, 1, 645, 1253, 927],
]

# By default, this will pad using 0s; it is configurable via the
# "value" parameter.
# Note that you could "pre" padding [at the beginning] or
# "post" padding [at the end].
# We recommend using "post" padding when working with RNN layers
# [in order to be able to use the
# CuDNN implementation of the layers].
padded_inputs = tf.keras.preprocessing.sequence.pad_sequences[
    raw_inputs, padding="post"
]
print[padded_inputs]
4] có đối số
[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
4 trong phương thức
raw_inputs = [
    [711, 632, 71],
    [73, 8, 3215, 55, 927],
    [83, 91, 1, 645, 1253, 927],
]

# By default, this will pad using 0s; it is configurable via the
# "value" parameter.
# Note that you could "pre" padding [at the beginning] or
# "post" padding [at the end].
# We recommend using "post" padding when working with RNN layers
# [in order to be able to use the
# CuDNN implementation of the layers].
padded_inputs = tf.keras.preprocessing.sequence.pad_sequences[
    raw_inputs, padding="post"
]
print[padded_inputs]
7 của chúng

Trong khi đó, các lớp tạo ra mặt nạ [e. g.

[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
5] hiển thị một phương thức
raw_inputs = [
    [711, 632, 71],
    [73, 8, 3215, 55, 927],
    [83, 91, 1, 645, 1253, 927],
]

# By default, this will pad using 0s; it is configurable via the
# "value" parameter.
# Note that you could "pre" padding [at the beginning] or
# "post" padding [at the end].
# We recommend using "post" padding when working with RNN layers
# [in order to be able to use the
# CuDNN implementation of the layers].
padded_inputs = tf.keras.preprocessing.sequence.pad_sequences[
    raw_inputs, padding="post"
]
print[padded_inputs]
9 mà bạn có thể gọi

Do đó, bạn có thể chuyển đầu ra của phương thức

[[ 711  632   71    0    0    0]
 [  73    8 3215   55  927    0]
 [  83   91    1  645 1253  927]]
0 của lớp sản xuất mặt nạ sang phương thức
raw_inputs = [
    [711, 632, 71],
    [73, 8, 3215, 55, 927],
    [83, 91, 1, 645, 1253, 927],
]

# By default, this will pad using 0s; it is configurable via the
# "value" parameter.
# Note that you could "pre" padding [at the beginning] or
# "post" padding [at the end].
# We recommend using "post" padding when working with RNN layers
# [in order to be able to use the
# CuDNN implementation of the layers].
padded_inputs = tf.keras.preprocessing.sequence.pad_sequences[
    raw_inputs, padding="post"
]
print[padded_inputs]
7 của lớp tiêu thụ mặt nạ, như thế này

[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
1
[
  ["Hello", "world", "!"],
  ["How", "are", "you", "doing", "today"],
  ["The", "weather", "will", "be", "nice", "tomorrow"],
]
0

Hỗ trợ tạo mặt nạ trong các lớp tùy chỉnh của bạn

Đôi khi, bạn có thể cần viết các lớp tạo mặt nạ [như

[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
5] hoặc các lớp cần sửa đổi mặt nạ hiện tại

Chẳng hạn, bất kỳ lớp nào tạo ra một tenxơ có chiều thời gian khác với đầu vào của nó, chẳng hạn như lớp

[[ 711  632   71    0    0    0]
 [  73    8 3215   55  927    0]
 [  83   91    1  645 1253  927]]
3 nối với chiều thời gian, sẽ cần sửa đổi mặt nạ hiện tại để các lớp xuôi dòng có thể đưa dấu thời gian được che vào đúng cách.

Để làm điều này, lớp của bạn nên triển khai phương thức

[[ 711  632   71    0    0    0]
 [  73    8 3215   55  927    0]
 [  83   91    1  645 1253  927]]
4, phương thức này tạo ra một mặt nạ mới cho đầu vào và mặt nạ hiện tại

Dưới đây là một ví dụ về lớp

[[ 711  632   71    0    0    0]
 [  73    8 3215   55  927    0]
 [  83   91    1  645 1253  927]]
5 cần sửa đổi mặt nạ hiện tại

[
  ["Hello", "world", "!"],
  ["How", "are", "you", "doing", "today"],
  ["The", "weather", "will", "be", "nice", "tomorrow"],
]
1
[
  ["Hello", "world", "!"],
  ["How", "are", "you", "doing", "today"],
  ["The", "weather", "will", "be", "nice", "tomorrow"],
]
2

Đây là một ví dụ khác về lớp

[[ 711  632   71    0    0    0]
 [  73    8 3215   55  927    0]
 [  83   91    1  645 1253  927]]
6 có khả năng tạo mặt nạ từ các giá trị đầu vào

[
  ["Hello", "world", "!"],
  ["How", "are", "you", "doing", "today"],
  ["The", "weather", "will", "be", "nice", "tomorrow"],
]
3____04

Chọn tham gia che giấu sự lan truyền trên các lớp tương thích

Hầu hết các lớp không sửa đổi kích thước thời gian, vì vậy không cần sửa đổi mặt nạ hiện tại. Tuy nhiên, họ vẫn có thể muốn có khả năng truyền mặt nạ hiện tại, không thay đổi, sang lớp tiếp theo. Đây là một hành vi chọn tham gia. Theo mặc định, một lớp tùy chỉnh sẽ hủy mặt nạ hiện tại [vì khung không có cách nào để biết liệu việc truyền mặt nạ có an toàn hay không]

Nếu bạn có một lớp tùy chỉnh không sửa đổi thứ nguyên thời gian và nếu bạn muốn nó có thể truyền mặt nạ đầu vào hiện tại, bạn nên đặt

[[ 711  632   71    0    0    0]
 [  73    8 3215   55  927    0]
 [  83   91    1  645 1253  927]]
7 trong hàm tạo của lớp. Trong trường hợp này, hành vi mặc định của
[[ 711  632   71    0    0    0]
 [  73    8 3215   55  927    0]
 [  83   91    1  645 1253  927]]
0 là chỉ chuyển mặt nạ hiện tại qua

Đây là một ví dụ về một lớp được đưa vào danh sách trắng để truyền mặt nạ

[
  ["Hello", "world", "!"],
  ["How", "are", "you", "doing", "today"],
  ["The", "weather", "will", "be", "nice", "tomorrow"],
]
5

Bây giờ, bạn có thể sử dụng lớp tùy chỉnh này ở giữa lớp tạo mặt nạ [như

[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
5] và lớp sử dụng mặt nạ [như
raw_inputs = [
    [711, 632, 71],
    [73, 8, 3215, 55, 927],
    [83, 91, 1, 645, 1253, 927],
]

# By default, this will pad using 0s; it is configurable via the
# "value" parameter.
# Note that you could "pre" padding [at the beginning] or
# "post" padding [at the end].
# We recommend using "post" padding when working with RNN layers
# [in order to be able to use the
# CuDNN implementation of the layers].
padded_inputs = tf.keras.preprocessing.sequence.pad_sequences[
    raw_inputs, padding="post"
]
print[padded_inputs]
4] và lớp này sẽ truyền mặt nạ dọc theo để đến lớp sử dụng mặt nạ

[
  ["Hello", "world", "!"],
  ["How", "are", "you", "doing", "today"],
  ["The", "weather", "will", "be", "nice", "tomorrow"],
]
6
[
  ["Hello", "world", "!"],
  ["How", "are", "you", "doing", "today"],
  ["The", "weather", "will", "be", "nice", "tomorrow"],
]
7

Viết các lớp cần thông tin mặt nạ

Một số lớp là người tiêu dùng mặt nạ. họ chấp nhận một đối số

[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
4 trong
[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
52 và sử dụng nó để xác định xem có nên bỏ qua các bước thời gian nhất định hay không

Để viết một lớp như vậy, bạn chỉ cần thêm đối số

[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
53 vào chữ ký
[
  [71, 1331, 4231]
  [73, 8, 3215, 55, 927],
  [83, 91, 1, 645, 1253, 927],
]
52 của mình. Mặt nạ được liên kết với đầu vào sẽ được chuyển đến lớp của bạn bất cứ khi nào có sẵn

Đây là một ví dụ đơn giản dưới đây. một lớp tính toán softmax theo chiều thời gian [trục 1] của chuỗi đầu vào, đồng thời loại bỏ dấu thời gian bị che

Mặt nạ boolean là gì?

Mặt nạ Boolean, còn được gọi là lập chỉ mục boolean, là một tính năng trong Python NumPy cho phép lọc các giá trị trong các mảng có nhiều mảng .

Mặt nạ DF là gì?

Mặt nạ phòng độc là gì? . cú pháp. Khung dữ liệu. mask[self, cond, other=nan, inplace=False, axis=None, level=None, errors='raise', try_cast=False] Tham số. Tên. 19-Aug-2022. used to replace values where the condition is True. Syntax: DataFrame.mask[self, cond, other=nan, inplace=False, axis=None, level=None, errors='raise', try_cast=False] Parameters: Name.19-Aug-2022.

Chủ Đề