Torch Lua จะคำนวณระยะทางโคไซน์สำหรับค่าเดี่ยวของเทนเซอร์สองตัวแต่ละคู่ได้อย่างไร

ฉันมีปัญหาการเขียนโปรแกรมใน Torch ในปัจจุบัน

ฉันมีโต๊ะที่ทำจากเทนเซอร์สองตัว:

require 'nn'
N = 4
aaaTensor = torch.randn(N)
bbbTensor = torch.randn(N)
thisTable = {aaaTensor, bbbTensor}

ฉันต้องการคำนวณ ระยะทางโคไซน์สำหรับคู่ของค่าเดี่ยวแต่ละคู่ ของ aaaTensor และ bbbTensor:

  • ระยะห่างโคไซน์ระหว่าง aaaTensor[1] ถึง bbbTensor[1]
  • ระยะห่างโคไซน์ระหว่าง aaaTensor[2] ถึง bbbTensor[2]
  • ...
  • ระยะห่างโคไซน์ระหว่าง aaaTensor[N] ถึง bbbTensor[N]

และฉันไม่รู้ว่าต้องทำอย่างไร หากฉันใช้โมดูล nn.CosineDistance() (ลิงก์) มันจะคำนวณ ระยะทางโคไซน์ทั่วไป ระหว่าง aaaTensor และ bbbTensor:

cosine = nn.CosineDistance()
cosine:forward{aaaTensor, bbbTensor}
0.7185
[torch.DoubleTensor of size 1]

ฉันต้องการให้มีเอาต์พุต N=4

ฉันจะใช้การคำนวณระยะทางโคไซน์ทีละรายการได้อย่างไร ขอบคุณ


person DavideChicco.it    schedule 09.08.2016    source แหล่งที่มา
comment
โดยปกติแล้ว ฉันคาดหวังว่าจะใช้ระยะโคไซน์กับเวกเตอร์สองตัว แต่ aaaTensor[1] และ bbbTensor[2] เป็นเพียงตัวเลข ผลต่างโคไซน์ของตัวเลขสองตัวหมายถึงอะไร?   -  person hugomg    schedule 09.08.2016


คำตอบ (1)


เอกสารประกอบบอกว่า nn.CosineDistance() ยอมรับ แบตช์ ดังนั้น (แม้ว่าระยะทางโคไซน์ของค่าเดี่ยวจะไม่สมเหตุสมผล) คุณสามารถทำได้ดังนี้

require 'nn'
N = 4
aaaTensor = torch.randn(N,1)
bbbTensor = torch.randn(N,1)
thisTable = {aaaTensor, bbbTensor}
cosine = nn.CosineDistance()
cosine:forward{aaaTensor, bbbTensor}
person fmguler    schedule 10.08.2016