2016-12-14 27 views
5

mô-đun source_code có ba thông số được yêu cầu mà chúng liệt kê chúng dưới dạng đầu ra, mục tiêu và trọng số.hiểu các tham số sequence_loss tensorflow

Đầu ra và mục tiêu tự giải thích, nhưng tôi muốn hiểu rõ hơn tham số weight là gì?

Điều khác tôi thấy khó hiểu là nó nói rằng targets phải giống như length làm đầu ra, chính xác chúng có ý nghĩa gì theo độ dài của một tensor? Đặc biệt nếu nó là một tensor 3 chiều.

Trả lời

0

Chúng tôi đã sử dụng lớp này và giáo sư của chúng tôi nói rằng chúng tôi có thể truyền cho nó hình dạng đúng (bình luận cho biết "danh sách 1D có kích thước hàng loạt float-Tensors có cùng chiều dài như logits"). Điều đó không giúp ích cho ý nghĩa của chúng, nhưng có thể nó sẽ giúp bạn chạy mã. Đã làm cho tôi.

Mã này nên thực hiện thủ thuật: [tf.ones(batch_size, tf.float32) for _ in logits].

Chỉnh sửa: từ mã TF:

for logit, target, weight in zip(logits, targets, weights): 
     if softmax_loss_function is None: 
     # TODO(irving,ebrevdo): This reshape is needed because 
     # sequence_loss_by_example is called with scalars sometimes, which 
     # violates our general scalar strictness policy. 
     target = array_ops.reshape(target, [-1]) 
     crossent = nn_ops.sparse_softmax_cross_entropy_with_logits(
      logit, target) 
     else: 
     crossent = softmax_loss_function(logit, target) 
     log_perp_list.append(crossent * weight) 

Các trọng số được thông qua được nhân bởi sự mất mát cho rằng logit cụ thể. Vì vậy, tôi đoán nếu bạn muốn có một dự đoán cụ thể thêm nghiêm túc, bạn có thể tăng trọng lượng trên 1.

+0

Nó giúp một chút, nhưng tôi đang cố gắng hiểu thêm về mục đích của thông số trọng số, Im không tìm thấy nhiều cuộc thảo luận về trọng số trong hàm mất của RNN, trừ khi chúng ta đang nói về đầu ra lớp. Bạn có biết câu trả lời cho câu hỏi hình dạng thích hợp liên quan đến chiều dài có nghĩa là gì không? – TheM00s3

+0

Tôi đoán bạn đang nói về nhận xét trong mã? 'trọng số: Danh sách 1D có kích thước hàng loạt float-Tensors có cùng độ dài như logits.' Là câu hỏi của bạn về nhận xét đó? –

+0

đó sẽ là một. – TheM00s3

1

Hãy nghĩ về trọng lượng như mặt nạ được áp dụng cho thiết bị đầu vào. Trong một số ứng dụng NLP, chúng ta thường có độ dài câu khác nhau cho mỗi câu. Để ghép song song/lô nhiều câu dụ thành một minibatch để nạp vào lưới thần kinh, mọi người sử dụng ma trận mặt nạ để biểu thị phần tử nào trong tensor đầu vào thực sự là đầu vào hợp lệ. Ví dụ, trọng lượng có thể là np.ones([batch, max_length]) có nghĩa là tất cả các yếu tố đầu vào là hợp pháp.

Chúng tôi cũng có thể sử dụng một ma trận của hình dạng giống như các nhãn như np.asarray([[1,1,1,0],[1,1,0,0],[1,1,1,1]]) (chúng tôi giả định hình dạng nhãn là 3x4), sau đó các crossEntropy của dòng đầu tiên cột cuối cùng sẽ được đeo mặt nạ ra là 0.

Bạn cũng có thể sử dụng trọng lượng để tính toán tích lũy trọng số của entropy chéo.

Các vấn đề liên quan