docs: 添加项目文档和示例代码 添加了完整的项目文档,包括README.md文件,详细介绍gotensor库的功能特性、 安装方法和使用示例。同时添加了多个示例程序展示基本运算、自动微分和线性 回归功能,并完善了测试用例。 - 添加LICENSE文件(MIT许可证) - 添加README.md项目文档 - 添加基本运算示例 - 添加自动微分示例 - 添加线性回归示例 - 添加单元测试文件 ``` |
||
|---|---|---|
| examples | ||
| .gitignore | ||
| LICENSE | ||
| README.md | ||
| go.mod | ||
| go.sum | ||
| tensor.go | ||
| tensor_test.go | ||
README.md
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 文件。