Chapter 26
layers/kmeans
github.com/openfluke/welvet/layers/kmeans🚧
Why it exists
Soft clustering as a differentiable layer lets topology experiments sit inside the same train loop.
What it is
Centers on Dense (K×FeatureDim); soft assignment outputs. Smoke+census.
Go example
Run:
cd welvet/examples/26-kmeans && source ../env.sh && go run .package main
import (
"fmt"
"github.com/openfluke/welvet/core"
"github.com/openfluke/welvet/layers/kmeans"
)
func main() {
l, err := kmeans.New(kmeans.Config{NumClusters: 4, FeatureDim: 8})
if err != nil {
panic(err)
}
x := core.NewTensor[float32](1, 8)
_, y, err := kmeans.Forward(l, x)
fmt.Println(y.Shape, err)
}
Output
[1 4] <nil>