3.5 KiB
3.5 KiB
gotensor
gotensor 是一个用 Go 语言实现的张量计算库,专注于为 Go 开发者提供高效的数值计算能力,支持自动微分和反向传播,适用于构建轻量级机器学习模型。
功能特性
- 基本张量运算:加法、减法、乘法、矩阵乘法
- 数乘、转置等张量操作
- 自动微分与反向传播机制
- 激活函数:Sigmoid、ReLU、Softmax
- 卷积与池化操作:Conv2D、MaxPool2D、AvgPool2D
- 神经网络层与损失函数:Flatten、CrossEntropy、MSE
- 多种初始化方式:零张量、单位矩阵、随机张量
- 模型定义和训练支持
- 模型保存和加载
- 多种优化器:SGD、Adam
安装
go get git.kingecg.top/kingecg/gotensor
快速开始
package main
import (
"fmt"
"git.kingecg.top/kingecg/gotensor"
)
func main() {
// 创建张量
tensor1, _ := gotensor.NewTensor([]float64{1, 2, 3}, []int{1, 3})
tensor2, _ := gotensor.NewTensor([]float64{4, 5, 6}, []int{3, 1})
// 执行矩阵乘法
result, _ := tensor1.MatMul(tensor2)
fmt.Println(result)
}
模型训练示例
package main
import (
"fmt"
"git.kingecg.top/kingecg/gotensor"
)
func main() {
// 创建模型(例如:简单的线性回归模型)
// 这里可以使用Sequential模型或者自定义模型
// 定义一些示例数据
input, _ := gotensor.NewTensor([]float64{1, 2, 3, 4}, []int{2, 2})
target, _ := gotensor.NewTensor([]float64{5, 6, 7, 8}, []int{2, 2})
// 创建模型参数
weights, _ := gotensor.NewTensor([]float64{0.5, 0.3, 0.2, 0.4}, []int{2, 2})
// 定义模型(这里简化为单个张量,实际中会是更复杂的结构)
// ...
// 定义优化器
optimizer := gotensor.NewSGD([]*gotensor.Tensor{weights}, 0.01)
// 创建训练器
trainer := gotensor.NewTrainer(nil, optimizer) // 需要传入实际模型
// 开始训练
// trainer.Train(trainInputs, trainTargets, epochs, lossFn, true)
fmt.Println("Training example")
}
API 文档
张量操作
NewTensor(data []float64, shape []int): 创建新张量Add(other *Tensor): 张量加法Subtract(other *Tensor): 张量减法Multiply(other *Tensor): 张量逐元素乘法MatMul(other *Tensor): 矩阵乘法Scale(factor float64): 张量数乘Sigmoid(): Sigmoid激活函数ReLU(): ReLU激活函数Softmax(): Softmax函数Backward(): 反向传播
神经网络层
Flatten(): 展平张量CrossEntropy(target *Tensor): 交叉熵损失MeanSquaredError(target *Tensor): 均方误差损失
模型定义
Sequential: 序列模型Model接口: 模型的基本接口SaveModel(model Model, filepath string): 保存模型LoadModel(model Model, filepath string): 加载模型
优化器
SGD: 随机梯度下降Adam: Adam优化算法
训练器
Trainer: 训练管理器NewTrainer(model Model, optimizer Optimizer): 创建训练器Train(...): 执行训练Evaluate(...): 评估模型
示例
项目包含多个示例:
examples/basic_operation: 基本张量运算示例examples/autograd: 自动微分示例examples/linear_regression: 线性回归示例examples/cnn_example.go: 卷积神经网络示例
贡献
欢迎提交 Issue 和 Pull Request 来帮助改进 gotensor!
许可证
本项目使用 MIT 许可证 - 详见 LICENSE 文件。