tinyai-deeplearning 是 TinyAI 框架的深度学习核心层,提供了从底层数值计算到高层神经网络构建的完整深度学习解决方案。该层包含 7个核心模块 ,构成了从基础计算到应用实现的完整技术栈。
纯Java实现 : 零第三方依赖的核心计算引擎
教育友好 : 清晰的代码结构和详尽的中文注释
模块化架构 : 高度解耦的组件设计,支持灵活组合
生产就绪 : 企业级的架构设计,支持并行训练
扩展性强 : 开放的接口设计,便于添加新算法
graph TB
subgraph "应用层"
App1[tinyai-deeplearning-case<br/>应用示例集]
end
subgraph "机器学习层"
ML1[tinyai-deeplearning-ml<br/>机器学习核心]
RL1[tinyai-deeplearning-rl<br/>强化学习]
NL1[tinyai-deeplearning-nl<br/>自然语言处理]
end
subgraph "神经网络层"
NN1[tinyai-deeplearning-nnet<br/>神经网络层]
end
subgraph "计算引擎层"
Func1[tinyai-deeplearning-func<br/>自动微分引擎]
end
subgraph "数值基础层"
Ndarr1[tinyai-deeplearning-ndarr<br/>多维数组库]
end
App1 --> ML1
App1 --> RL1
App1 --> NL1
ML1 --> NN1
RL1 --> NN1
NL1 --> NN1
NN1 --> Func1
Func1 --> Ndarr1
Loading
Java : JDK 17+
Maven : 3.6+
内存 : 推荐 4GB+
# 编译所有深度学习模块
cd tinyai-deeplearning
mvn clean compile
# 运行测试
mvn test
# 打包安装
mvn install
import io .leavesfly .tinyai .ndarr .NdArray ;
import io .leavesfly .tinyai .ndarr .Shape ;
// 创建数组
NdArray a = NdArray .of (new float [][]{{1 , 2 }, {3 , 4 }});
NdArray b = NdArray .zeros (Shape .of (2 , 3 ));
NdArray c = NdArray .randn (Shape .of (100 , 50 ));
// 数学运算
NdArray result = a .add (b ) // 加法
.mul (c ) // 对应元素相乘
.dot (d ) // 矩阵乘法
.sigmoid () // Sigmoid激活
.transpose (); // 转置
import io .leavesfly .tinyai .func .Variable ;
// 创建变量
Variable x = new Variable (NdArray .of (new float [][]{{1 , 2 }, {3 , 4 }}), "x" );
Variable y = new Variable (NdArray .of (new float [][]{{2 , 3 }, {4 , 5 }}), "y" );
// 计算
Variable z = x .add (y );
Variable w = z .sigmoid ();
// 反向传播
w .backward ();
// 获取梯度
NdArray xGrad = x .getGrad ();
System .out .println ("x的梯度: " + xGrad );
import io .leavesfly .tinyai .nnet .block .*;
import io .leavesfly .tinyai .nnet .v1 .dnn .layer .LinearLayer ;
import io .leavesfly .tinyai .nnet .v1 .activate .layer .ReLuLayer ;
// 构建MLP
MlpBlock mlp = new MlpBlock ("classifier" , 784 , new int []{128 , 64 , 10 });
// 或者手动构建
SequentialBlock model = new SequentialBlock ("manual_model" );
model .addLayer (new LinearLayer ("fc1" , 784 , 256 ));
model .addLayer (new ReLuLayer ("relu1" ));
model .addLayer (new LinearLayer ("fc2" , 256 , 10 ));
// 前向传播
Variable output = model .blockForward (input );
import io .leavesfly .tinyai .ml .*;
// 准备数据
DataSet dataSet = new ArrayDataset (xData , yData );
// 创建模型
MlpBlock mlpBlock = new MlpBlock ("classifier" , 784 , new int []{128 , 64 , 10 });
Model model = new Model ("mnist_classifier" , mlpBlock );
// 配置训练器
Monitor monitor = new Monitor ();
Evaluator evaluator = new Evaluator ();
Trainer trainer = new Trainer (100 , monitor , evaluator , true , 4 ); // 并行训练
// 初始化训练器
trainer .init (dataSet , model , new SoftmaxCrossEntropyLoss (), new Adam (0.001 ));
// 开始训练
trainer .train (true );
import io .leavesfly .tinyai .rl .*;
// 创建环境
CartPoleEnvironment env = new CartPoleEnvironment ();
// 创建DQN智能体
DQNAgent agent = new DQNAgent (
"CartPole-DQN" ,
stateDim ,
actionDim ,
hiddenSizes ,
learningRate ,
epsilon ,
gamma ,
batchSize ,
bufferSize ,
updateFreq
);
// 训练循环
for (int episode = 0 ; episode < maxEpisodes ; episode ++) {
State state = env .reset ();
while (!done ) {
Action action = agent .selectAction (state );
StepResult result = env .step (action );
agent .store (state , action , result .reward , result .nextState , result .done );
agent .train ();
state = result .nextState ;
}
}
import io .leavesfly .tinyai .nl .*;
// 词嵌入
WordEmbedding embedding = new WordEmbedding ("embedding" , vocabSize , embeddingDim );
Variable embedded = embedding .layerForward (inputIds );
// LSTM
LSTM lstm = new LSTM ("lstm" , inputSize , hiddenSize , numLayers , dropout );
Variable output = lstm .layerForward (embedded );
// 注意力机制
Attention attention = new Attention ("attention" , hiddenSize );
Variable context = attention .layerForward (query , key , value );
图像分类 : MNIST手写数字识别、CIFAR-10分类
目标检测 : 基于卷积网络的目标检测
图像生成 : GAN、VAE等生成模型
文本分类 : 情感分析、主题分类
序列标注 : 命名实体识别、词性标注
序列生成 : 机器翻译、文本摘要
语言模型 : RNN、LSTM、GRU语言模型
游戏AI : CartPole、GridWorld等经典环境
决策优化 : 多臂老虎机、策略优化
控制问题 : 机器人控制、自动驾驶
分类任务 : 逻辑回归、多分类
回归任务 : 线性回归、多元回归
聚类分析 : K-Means、层次聚类
指标
数值
总模块数
7个
Java类文件
300+
测试用例
400+
代码行数
50,000+
文档页数
150+
模块
测试数量
覆盖率
状态
tinyai-deeplearning-ndarr
80+
98%+
✅ 通过
tinyai-deeplearning-func
90+
97%+
✅ 通过
tinyai-deeplearning-nnet
100+
96%+
✅ 通过
tinyai-deeplearning-ml
70+
95%+
✅ 通过
tinyai-deeplearning-rl
30+
90%+
✅ 通过
tinyai-deeplearning-nl
20+
85%+
✅ 通过
tinyai-deeplearning-case
10+
100%
✅ 通过
总计
400+
95%+
✅ 全部通过
学习 tinyai-deeplearning-ndarr - 理解多维数组操作
学习 tinyai-deeplearning-func - 掌握自动微分原理
完成简单的数学运算和梯度计算
学习 tinyai-deeplearning-nnet - 掌握网络层构建
学习 tinyai-deeplearning-ml - 理解训练流程
实现基础的分类和回归模型
学习 tinyai-deeplearning-rl - 掌握强化学习
学习 tinyai-deeplearning-nl - 理解序列建模
学习 tinyai-deeplearning-case - 完整应用案例
# MNIST手写数字识别
mvn exec:java -Dexec.mainClass=" io.leavesfly.tinyai.example.classify.MnistMlpExam" \
-pl tinyai-deeplearning-case
# CartPole强化学习
mvn exec:java -Dexec.mainClass=" io.leavesfly.tinyai.example.rl.CartPoleDQNExample" \
-pl tinyai-deeplearning-case
# 简单RNN示例
mvn exec:java -Dexec.mainClass=" io.leavesfly.tinyai.example.nlp.SimpleRNNExample" \
-pl tinyai-deeplearning-case
# 线性回归示例
mvn exec:java -Dexec.mainClass=" io.leavesfly.tinyai.example.regression.LinearRegressionExample" \
-pl tinyai-deeplearning-case
✅ N维数组支持 : 标量、向量、矩阵、高维张量
✅ 广播机制 : 自动处理不同形状的数组运算
✅ 内存优化 : 零拷贝操作、内存池管理
✅ 数值稳定性 : 精心设计的数值算法
✅ 动态计算图 : 类似PyTorch的Eager模式
✅ 反向传播 : 递归和迭代两种实现
✅ 丰富的函数 : 50+ 数学函数和激活函数
✅ 梯度检查 : 内置数值梯度验证
✅ 全连接层 : Linear、Dense
✅ 卷积层 : Conv1d、Conv2d、ConvTranspose
✅ 循环层 : SimpleRNN、LSTM、GRU
✅ 注意力层 : MultiHeadAttention、SelfAttention
✅ 归一化层 : BatchNorm、LayerNorm、GroupNorm
✅ Transformer : 完整的Transformer架构
✅ 并行训练 : 多线程批次并行处理
✅ 优化器 : SGD、Momentum、Adam、AdamW、RMSprop
✅ 损失函数 : MSE、CrossEntropy、SoftmaxCrossEntropy
✅ 监控评估 : 训练监控、性能评估、指标统计
✅ 模型序列化 : 模型保存和加载
✅ DQN算法 : 深度Q网络、经验回放、目标网络
✅ REINFORCE : 策略梯度、Monte Carlo方法
✅ 多臂老虎机 : ε-贪心、UCB、Thompson采样
✅ 环境仿真 : CartPole、GridWorld等经典环境
✅ 词嵌入 : Word2Vec、GloVe风格的词向量
✅ 序列模型 : RNN、LSTM、GRU
✅ 注意力机制 : Bahdanau、Luong、Self-Attention
✅ 序列到序列 : Encoder-Decoder架构
import io .leavesfly .tinyai .nnet .Layer ;
public class CustomLayer extends Layer {
@ Override
public Variable layerForward (Variable ... inputs ) {
// 实现自定义前向传播
return customComputation (inputs [0 ]);
}
@ Override
public void init () {
// 参数初始化
addParameter ("weight" , NdArray .randn (inputShape , outputShape ));
addParameter ("bias" , NdArray .zeros (outputShape ));
}
}
import io .leavesfly .tinyai .ml .Optimizer ;
public class CustomOptimizer extends Optimizer {
@ Override
public void step () {
// 实现自定义参数更新逻辑
for (Map .Entry <String , Variable > entry : parameters .entrySet ()) {
Variable param = entry .getValue ();
NdArray grad = param .getGrad ();
// 自定义更新规则
updateParameter (param , grad );
}
}
}
import io .leavesfly .tinyai .ml .LossFunction ;
public class CustomLoss implements LossFunction {
@ Override
public Variable computeLoss (Variable predicted , Variable target ) {
// 实现自定义损失计算
return customLossComputation (predicted , target );
}
}
代码规范 : 遵循Java编码规范,添加详细中文注释
测试覆盖 : 新功能必须包含完整的单元测试
文档更新 : 重要功能需要更新相应的README和技术文档
性能优化 : 注意内存使用和计算效率
Fork 项目仓库
创建功能分支 (git checkout -b feature/NewFeature)
提交更改 (git commit -m 'Add some NewFeature')
推送到分支 (git push origin feature/NewFeature)
创建 Pull Request
本项目采用 Apache License 2.0 开源许可证。详情请参阅 LICENSE 文件。
感谢所有为 TinyAI 深度学习框架做出贡献的开发者!
特别感谢:
Java 开源社区的技术支持
深度学习领域的理论基础
所有提供反馈和建议的用户