gotensor/README.md

2.5 KiB
Raw Blame History

gotensor

gotensor 是一个用 Go 语言编写的张量计算库,提供了基本的张量运算、自动微分和反向传播功能。该项目旨在为 Go 语言开发者提供一个高效、易用的张量计算工具。

功能特性

  • 基本张量运算:加法、减法、乘法、矩阵乘法等
  • 张量操作:数乘、转置等
  • 自动微分和反向传播
  • 支持多种初始化方式:零张量、单位矩阵、随机张量等

安装

go get git.kingecg.top/kingecg/gotensor

快速开始

package main

import (
    "fmt"
    "git.kingecg.top/kingecg/gotensor"
)

func main() {
    // 创建两个2x2的张量
    t1_data := []float64{1, 2, 3, 4}
    t1_shape := []int{2, 2}
    t1, err := gotensor.NewTensor(t1_data, t1_shape)
    if err != nil {
        panic(err)
    }

    t2_data := []float64{5, 6, 7, 8}
    t2, err := gotensor.NewTensor(t2_data, t1_shape)
    if err != nil {
        panic(err)
    }

    // 执行加法运算
    result, err := t1.Add(t2)
    if err != nil {
        panic(err)
    }

    fmt.Printf("结果:\n%s\n", result.String())
}

示例

项目包含多个示例,展示如何使用 gotensor

运行示例:

# 基本运算示例
go run examples/basic_operations.go

# 自动微分示例
go run examples/autograd_example.go

# 线性回归示例
go run examples/linear_regression.go

API 文档

创建张量

  • NewTensor(data []float64, shape []int) - 创建新的张量
  • NewZeros(shape []int) - 创建零张量
  • NewOnes(shape []int) - 创建全一张量
  • NewIdentity(size int) - 创建单位矩阵

张量运算

  • Add(other *Tensor) - 张量加法
  • Subtract(other *Tensor) - 张量减法
  • Multiply(other *Tensor) - 张量逐元素乘法
  • MatMul(other *Tensor) - 矩阵乘法
  • Scale(factor float64) - 数乘

其他方法

  • ZeroGrad() - 将梯度置零
  • Shape() - 返回张量形状
  • Size() - 返回张量大小
  • Get(indices ...int) - 获取指定位置的值
  • Set(value float64, indices ...int) - 设置指定位置的值
  • Backward() - 执行反向传播

测试

运行测试:

go test

许可证

本项目使用 MIT 许可证 - 详见 LICENSE 文件。