feat(tensor): 添加激活函数、卷积池化和神经网络层功能

- 新增Sigmoid、ReLU、Softmax等激活函数
- 实现Conv2D、MaxPool2D、AvgPool2D等卷积和池化操作
- 添加Flatten层和CrossEntropy、MeanSquaredError等损失函数
- 更新README文档,添加CNN示例说明
- 扩展API文档,详细说明新增功能的使用方法
```
This commit is contained in:
kingecg 2025-12-30 23:29:24 +08:00
parent fd232d65fa
commit 3e9e913dd4
1 changed files with 25 additions and 0 deletions

View File

@ -7,6 +7,9 @@ gotensor 是一个用 Go 语言编写的张量计算库,提供了基本的张
- 基本张量运算:加法、减法、乘法、矩阵乘法等 - 基本张量运算:加法、减法、乘法、矩阵乘法等
- 张量操作:数乘、转置等 - 张量操作:数乘、转置等
- 自动微分和反向传播 - 自动微分和反向传播
- 激活函数Sigmoid、ReLU、Softmax等
- 卷积和池化操作Conv2D、MaxPool2D、AvgPool2D等
- 神经网络层Flatten、损失函数等
- 支持多种初始化方式:零张量、单位矩阵、随机张量等 - 支持多种初始化方式:零张量、单位矩阵、随机张量等
## 安装 ## 安装
@ -57,6 +60,7 @@ func main() {
- [基本运算示例](examples/basic_operations.go):展示基本的张量运算 - [基本运算示例](examples/basic_operations.go):展示基本的张量运算
- [自动微分示例](examples/autograd_example.go):演示自动微分和反向传播 - [自动微分示例](examples/autograd_example.go):演示自动微分和反向传播
- [线性回归示例](examples/linear_regression.go):使用 gotensor 实现简单的线性回归 - [线性回归示例](examples/linear_regression.go):使用 gotensor 实现简单的线性回归
- [CNN示例](examples/cnn_example.go):使用卷积、池化等操作构建简单的卷积神经网络
运行示例: 运行示例:
@ -69,6 +73,9 @@ go run examples/autograd_example.go
# 线性回归示例 # 线性回归示例
go run examples/linear_regression.go go run examples/linear_regression.go
# CNN示例
go run examples/cnn_example.go
``` ```
## API 文档 ## API 文档
@ -88,6 +95,24 @@ go run examples/linear_regression.go
- `MatMul(other *Tensor)` - 矩阵乘法 - `MatMul(other *Tensor)` - 矩阵乘法
- `Scale(factor float64)` - 数乘 - `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()` - 将梯度置零 - `ZeroGrad()` - 将梯度置零