3.3 KiB
3.3 KiB
gotensor
gotensor 是一个用 Go 语言编写的张量计算库,提供了基本的张量运算、自动微分和反向传播功能。该项目旨在为 Go 语言开发者提供一个高效、易用的张量计算工具。
功能特性
- 基本张量运算:加法、减法、乘法、矩阵乘法等
- 张量操作:数乘、转置等
- 自动微分和反向传播
- 激活函数:Sigmoid、ReLU、Softmax等
- 卷积和池化操作:Conv2D、MaxPool2D、AvgPool2D等
- 神经网络层:Flatten、损失函数等
- 支持多种初始化方式:零张量、单位矩阵、随机张量等
安装
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
# CNN示例
go run examples/cnn_example.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)- 数乘
激活函数
Sigmoid()- Sigmoid激活函数ReLU()- ReLU激活函数Softmax()- Softmax激活函数
卷积和池化
Conv2D(kernel *Tensor, stride, padding int)- 二维卷积操作MaxPool2D(kernelSize, stride int)- 二维最大池化AvgPool2D(kernelSize, stride int)- 二维平均池化
神经网络层
Flatten()- 将多维张量展平为一维CrossEntropy(target *Tensor)- 交叉熵损失函数MeanSquaredError(target *Tensor)- 均方误差损失函数
其他方法
ZeroGrad()- 将梯度置零Shape()- 返回张量形状Size()- 返回张量大小Get(indices ...int)- 获取指定位置的值Set(value float64, indices ...int)- 设置指定位置的值Backward()- 执行反向传播
测试
运行测试:
go test
许可证
本项目使用 MIT 许可证 - 详见 LICENSE 文件。