| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package main
- import (
- "math"
- "math/rand"
- )
- type Vector []float64
- func MakeVector(n int) Vector {
- return make(Vector, n)
- }
- func MakeRandomVector(n int) Vector {
- V := make(Vector, n)
- for i := 0; i < n; i++ {
- for V[i] == 0 {
- V[i] = rand.NormFloat64()
- }
- }
- return V
- }
- func MakeDropoutVector(n int) Vector {
- V := make(Vector, n)
- for i := 0; i < n; i++ {
- if rand.Float64() >= Dropout {
- V[i] = 1 / (1 - Dropout)
- }
- }
- return V
- }
- func (A Vector) N() int {
- return len(A)
- }
- func (A Vector) Max() (int, float64) {
- id, max := 0, A[0]
- for i := 1; i < A.N(); i++ {
- if A[i] > max {
- id, max = i, A[i]
- }
- }
- return id, max
- }
- func (A Vector) Dot(B Vector) float64 {
- if A.N() != B.N() {
- panic("Incompatible Dimensions")
- }
- sum := 0.
- for i := 0; i < A.N(); i++ {
- sum += A[i] * B[i]
- }
- return sum
- }
- func (A Vector) Modulus() float64 {
- return math.Sqrt(A.Dot(A))
- }
|