StopGradient

lớp cuối cùng công khai StopGradient

Dừng tính toán độ dốc.

Khi được thực thi trong biểu đồ, op này sẽ xuất ra tenxơ đầu vào của nó.

Khi xây dựng các hoạt động để tính toán độ dốc, hoạt động này ngăn không cho tính đến sự đóng góp của các đầu vào của nó. Thông thường, trình tạo gradient sẽ thêm các op vào biểu đồ để tính đạo hàm của một 'tổn thất' được chỉ định bằng cách tìm ra đệ quy các đầu vào góp phần vào tính toán của nó. Nếu bạn chèn op này vào biểu đồ thì đầu vào của nó sẽ bị che khỏi bộ tạo gradient. Chúng không được tính đến khi tính toán độ dốc.

Điều này hữu ích bất cứ khi nào bạn muốn tính toán một giá trị bằng TensorFlow nhưng cần giả vờ rằng giá trị đó là một hằng số. Ví dụ: hàm softmax cho vectơ x có thể được viết là

def softmax(x):
     numerator = tf.exp(x)
     denominator = tf.reduce_sum(numerator)
     return numerator / denominator
 
Tuy nhiên, hàm này dễ bị tràn nếu các giá trị trong x lớn. Một cách khác ổn định hơn là trừ giá trị lớn nhất của x khỏi mỗi giá trị.
def stable_softmax(x):
     z = x - tf.reduce_max(x)
     numerator = tf.exp(z)
     denominator = tf.reduce_sum(numerator)
     return numerator / denominator
 
Tuy nhiên, khi chúng ta backprop thông qua softmax tới x, chúng ta không muốn backprop thông qua tf.reduce_max(x) (nếu các giá trị tối đa không phải là duy nhất thì gradient có thể chuyển sang đầu vào sai) và coi đó là phép tính một hằng số. Do đó, chúng ta nên viết nó ra dưới dạng
def stable_softmax(x):
     z = x - tf.stop_gradient(tf.reduce_max(x))
     numerator = tf.exp(z)
     denominator = tf.reduce_sum(numerator)
     return numerator / denominator
 
Một số ví dụ khác bao gồm:
  • Thuật toán EM trong đó bước M không được liên quan đến lan truyền ngược thông qua đầu ra của bước E.
  • Huấn luyện phân kỳ tương phản của máy Boltzmann trong đó, khi lấy đạo hàm hàm năng lượng, huấn luyện không được truyền ngược qua biểu đồ tạo ra các mẫu từ mô hình.
  • Huấn luyện đối nghịch, trong đó không có chỗ dựa nào xảy ra thông qua quá trình tạo ví dụ đối nghịch.

Phương pháp công cộng

Đầu ra <T>
asOutput ()
Trả về phần điều khiển tượng trưng của một tenxơ.
tĩnh <T> StopGradient <T>
tạo (Phạm vi phạm vi , đầu vào Toán hạng <T>)
Phương thức xuất xưởng để tạo một lớp bao bọc một thao tác StopGradient mới.
Đầu ra <T>

Phương pháp kế thừa

Phương pháp công cộng

Đầu ra công khai <T> asOutput ()

Trả về phần điều khiển tượng trưng của một tenxơ.

Đầu vào của các hoạt động TensorFlow là đầu ra của một hoạt động TensorFlow khác. Phương pháp này được sử dụng để thu được một thẻ điều khiển mang tính biểu tượng đại diện cho việc tính toán đầu vào.

tạo tĩnh công khai StopGradient <T> ( Phạm vi phạm vi, đầu vào Toán hạng <T>)

Phương thức xuất xưởng để tạo một lớp bao bọc một thao tác StopGradient mới.

Thông số
phạm vi phạm vi hiện tại
Trả lại
  • một phiên bản mới của StopGradient

Đầu ra công khai đầu ra <T> ()