INNER CODE UNIT · Go
bestDotProductAttention
takara-ai/go-attention · attention/attention.go:155
func bestDotProductAttention(query Vector, keys, values Matrix) (Vector, AttentionWeights, error) {
n := len(keys)
if n == 0 {
// If keys are empty, check if values exist to determine output dimension d_v
if len(values) > 0 && len(values[0]) > 0 {
d_v := len(values[0])
// Return empty weights and a zero vector of the correct value dimension
return make(Vector, d_v), Vector{}, nil
}
// If both keys and values are empty (or values have zero dimension), return error or nil vectors
return nil, nil, fmt.Errorf("empty keys and values provided")
}
// Basic dimension validation before proceeding
if len(values) != n {
return nil, nil, fmt.Errorf("dimension mismatch: %d keys vs %d values (expected equal)", n, len(values))
}
if len(values[0]) == 0 {