มันจะมีทางไหนที่ทำให้ the result will be artificially smoothed to hide jpeg artefacts การคำนวณของ Bernoulli ปูมบันทึก-Likelihoods สำหรับหลาย multivariate ตัวอย่าง?

0

คำถาม

ฉันอยู่ในปัจจุบันมีสองคนคบเพลิง Tensors, p แล้ว xซึ่งทั้งคู่ต่างมีรูปร่างของ (batch_size, input_size).

ฉันอยากจะลองคำนว Bernoulli ปูมบันทึก likelihoods สำหรับที่ให้ข้อมูล,แล้วกลับเป็น tensor ของขนาด (batch_size)

นี่เป็นตัวอย่างของสิ่งที่ฉันอยากจะทำอย่าง: ผมมีสูตรสำหรับปูมบันทึก likelihoods ของ Bernoulli สุ่มตัวแปร:

\sum_i^d x_{i} ln(p_i) + (1-x_i) ln (1-p_i)

บอกฉัน pTensor: [[0.6 0.4 0], [0.33 0.34 0.33]] และบอกว่าฉันมี x tensor สำหรับที่ฐานสอง inputs จากพวกนั้น probabilities:

[[1 1 0], [0 1 1]]

และฉันต้องการคำนวณปูมบันทึกความเป็นไปได้สำหรับทุกตัวอย่างซึ่งจะผลอยู่ใน:

[[ln(0.6)+ln(0.4)], [ln(0.67)+ln(0.34)+ln(0.33)]]

มันจะเป็นไปได้ที่จะทำอย่างนี้ computation โดยไม่มีการใช้สำหรับบางอย่าง? ฉันรู้ว่าฉันสามารถใช้ torch.sum(axis=1) ต้องทำสุดท้าย summation ระหว่างปูมบันทึกแต่มันเป็นไปได้ที่จะทำ Bernoulli ปูมบันทึก-ความเป็นไปได้ computation โดยไม่มีการใช้สำหรับบางอย่าง? หรือใช้ตอนที่ 1 สำหรับเรื่อง? ฉันกำลังพยายาม vectorize ปฏิบัติการนี้มากเท่าที่เป็นไปได้ ฉันสาบานได้\n ว่าเราสามารถใช้ลาเท็กซ์สำหรับสมกาก่อนหน้าทำบางอย่างเปลี่ยนแปลงหรือนี่เป็นอีกเว็บไซต์ของ?

log-likelihood math pytorch
2021-11-24 00:17:07
1

คำตอบที่ดีที่สุด

1

แม้ว่าจะไม่ดีแล้วซ้อมเธอโดยตรงใช้สูตรที่ tensors ตาม(ทำงานเพราะพวกนี้เป็นธาตุฉลาดปฏิบัติการ):

import torch
p = torch.tensor([
    [0.6, 0.4, 0],
    [0.33, 0.34, 0.33]
])

x = torch.tensor([
    [1., 1, 0],
    [0, 1, 1]
])

eps = 1e-8
bll1 = (x * torch.log(p+eps) + (1-x) * torch.log(1-p+eps)).sum(axis=1)
print(bll1)
#tensor([-1.4271162748, -2.5879497528])

โน้ตนั่นเพื่อหลีกเลี่ยง log(0) เกิดข้อผิดพลาด,ฉันต้องแนะนำเป็นตัวเล็กๆอย่างต่อเนื่อง eps อยู่ข้างใน

มีทางอื่นที่ดีกว่านี้คือต้องใช้ BCELoss ข้างใน nn ในศูนย์ควบคุม kde ในโมดูล pytorch.

import torch.nn as nn
bce = nn.BCELoss(reduction='none')
bll2 = -bce(p, x).sum(axis=1)
print(bll2)
#tensor([-1.4271162748, -2.5879497528])

ตั้งแต่ pytorch computes ที่ BCE เป็น การสูญเสียมัน prepends ของคุณสูตรงกับเครื่องหมายค่าเป็นลบ. ที่แอททริบิวต์ reduction='none' บอกว่าฉันไม่ต้องการให้ส่วนที่คำนวณแล้วสูญเสียที่จะลด(averaged/summed)ข้ามการประมวลผลกลุ่มภาพไม่ว่าทางไหนก็ตาม นี่คือขอแนะนำให้ใช้ตั้งแต่เราทำไม่ได้ต้องการให้ด้วยตนเองจัดกา numerical ความมั่นคงและผิดพลาดในการจัดการ(เช่นการเพิ่ม eps ด้านบน)

คุณสามารถแน่นอนตรวจสอบว่าสองคนอทางแก้ปัญหานั่นที่จริงกลับมาเหมือนกั tensor(upto เป็นความอดกลั้น):

torch.allclose(bll1, bll2)
# True

หรือที่ tensors(ไม่ต้องสรุปได้แรงแต่ละแถวด้ว):

torch.allclose((x * torch.log(p+eps) + (1-x) * torch.log(1-p+eps)), -bce(p, x))
# True

รู้สึกอิสระที่จะถามสำหรับกา clarifications.

2021-11-25 03:42:35

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่