Go to file
kingecg 3536fdf8cf ```
feat(tensor): 添加卷积和池化操作支持

新增Conv2D、MaxPool2D和AvgPool2D方法,支持二维卷积神经网络操作。
实现了前向传播和反向传播功能,包括梯度计算。

feat(layers): 添加激活函数和损失函数

新增Softmax、Sigmoid、ReLU激活函数和CrossEntropy、MSE损失函数。
实现了展平层Flatten操作,支持多维张量展平为一维。

test(tensor): 添加扩展张量操作的单元测试

新增Sigmoid、ReLU、Softmax、Flatten和MeanSquaredError的测试用例。
验证激活函数和损失函数的正确性及数值稳定性。

example(cnn): 添加卷积神经网络示例

创建CNN示例程序,演示卷积、池化、激活函数等操作的使用。
包含完整的前向传播流程和损失计算示例。
```
2025-12-30 23:18:07 +08:00
examples ``` 2025-12-30 23:18:07 +08:00
.gitignore ``` 2025-12-30 22:49:34 +08:00
LICENSE ``` 2025-12-30 23:03:54 +08:00
README.md ``` 2025-12-30 23:03:54 +08:00
convolution.go ``` 2025-12-30 23:18:07 +08:00
extended_tensor_test.go ``` 2025-12-30 23:18:07 +08:00
go.mod ``` 2025-12-30 22:49:34 +08:00
go.sum ``` 2025-12-30 22:49:34 +08:00
layers.go ``` 2025-12-30 23:18:07 +08:00
tensor.go ``` 2025-12-30 23:18:07 +08:00
tensor_test.go ``` 2025-12-30 23:03:54 +08:00

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 文件。