Skip to content

Commit

Permalink
update installation.md, tutorials.md
Browse files Browse the repository at this point in the history
  • Loading branch information
monitor1379 committed Nov 10, 2016
1 parent 26a41f7 commit f13e156
Show file tree
Hide file tree
Showing 4 changed files with 140 additions and 10 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
[Caffe](http://caffe.berkeleyvision.org/)
[MXNet](http://mxnet.readthedocs.io/en/latest/)
等等);
- 相反,Hamaa被创造的目的是**希望让深度学习的初学者能够通过使用
- 相反,Hamaa被创造的目的是**希望有一定深度学习基础的初学者能够通过使用
阅读Hamaa的源代码甚至去重现Hamaa来加深对神经网络/深度学习的理解**
以便更好地去使用上述几个工业级别的深度学习框架去解决实际问题(而不是成为一个调包/调参侠 :D)。

Expand Down
33 changes: 30 additions & 3 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,15 @@
### 没错,你刚发现了Hamaa!


Hamaa是专为深度学习初学者与研究人员设计的一款深度学习库
Hamaa是专为研究人员与有一定深度学习基础的初学者设计的一款深度学习库
它构建于Python/NumPy之上,
通过高度的抽象与模块化使得用Hamaa来搭建神经网络就像搭建积木一样简单。
研究人员能够通过使用Hamaa来减少实际开发中的重复工作并加快实验速度。

此外,Hamaa遵循简单与朴素的设计原则,并提供了充足的示例与教程来帮助初学者理解深度学习
此外,Hamaa遵循简单与朴素的设计原则,并提供了充足的示例与教程来帮助初学者应用深度学习
因此对于初学者来说它的源代码十分适合进行学习。

---

## Why build Hamaa

Expand All @@ -30,7 +31,7 @@ Hamaa是专为深度学习初学者与研究人员设计的一款深度学习库
等等)。
相反,Hamaa被创造的目的是**希望让深度学习的初学者能够通过使用、
阅读Hamaa的源代码甚至去重现Hamaa来加深对神经网络/深度学习的理解**
以便更好地去使用上述几个工业级别的深度学习框架去解决实际问题(而不是成为一个调包/调参侠 :D)。
以便更好地去使用上述几个工业级别的深度学习框架去解决实际问题(而不是成为一个调包/调参侠 D)。

如果你是深度学习的老司机并追求更复杂的模型与更快的速度,那么强烈建议你使用上述几个更加强大的深度学习库。

Expand All @@ -39,6 +40,32 @@ Hamaa是专为深度学习初学者与研究人员设计的一款深度学习库
我们建议你在[Github](https://github.com/monitor1379/hamaa)上star和watch 官方项目,
这样当官方有更新时,你会立即知道。

---

## The Design Philosophy of Hamaa

Hamaa始终遵循着`too SIMPLE and sometimes NAIVE`的原则来设计:

- **每一个可配置项都抽象成简单的模块**。 具体地,网络层、损失函数、优化器、初始化策略、激活函数都是独立
的模块,能够通过自由组装的方式来搭建模型。

- **所有模块都使用朴素的代码实现**。每一段源代码都希望能在第一次阅读时显得直观易懂,具有良好的可读性,
并且不过分使用trick。

Hamaa尽管在速度优化上没有工业级别的深度学习框架要好,
但Hamaa也具有以下优点:

- **安装依赖少,无需配置**。如果你想要进行一些简单的快速实验,又不想花大量时间在搭建与配置环境上的话,
那么基于Python的Hamaa可能是不错的选择。安装教程链接: [安装 Installation](user/installation.md)

- **使用简单**。学会使用Hamaa搭建一个完整的神经网络并进行数据可视化仅需不到1分钟。
此外如果你熟悉[Keras](http://keras.io)的话将能更快地上手。快速教程链接: [教程 Tutorials](user/tutorials.md)

- **源码易读**。朴素的设计模式、丰富的源码注释以及完备的设计文档能够让你深入理解Hamaa是如何将复杂的数学公式转化成实际的工程代码。

- **扩展性强**。Hamaa支持通过实现接口的方式来自定义模块。

---

## Future about Hamaa

Expand Down
18 changes: 12 additions & 6 deletions docs/user/installation.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# 安装 Installation

安装Hamaa所需的机器配置如下:

- **Platform:** Windows、Linux、macOS

- **Python Version:** Python 2.x (后续将支持Python 3.x版本)

## Step 1: Download Hamaa

如果你的电脑装有Git,可以通过Git下载源代码到本地:
Expand All @@ -8,19 +14,19 @@ $ git clone https://github.com/monitor1379/hamaa.git
```
或者通过浏览器在[官网首页](https://github.com/monitor1379/hamaa)点击右方的`Clone or download`按钮进行下载与解压。


---

## Step 2: Install dependencies

Hamaa主要依赖于4个库,它们的作用分别是:

- NumPy提供简便的矩阵运算、数值计算功能
- NumPy: 提供简便的矩阵运算、数值计算功能

- Matplotlib提供强大的绘图功能
- Matplotlib: 提供强大的绘图功能

- Nose负责单元测试与功能测试
- Nose: 负责单元测试与功能测试

- pillow:提供图像读写与图像处理功能
- pillow: 供图像读写与图像处理功能

如果你的机器上装有`pip`[Pyhton包管理器](https://pypi.python.org/pypi/pip)),则可通过以下方式进行安装:
```bash
Expand All @@ -32,7 +38,7 @@ $ pip install numpy matplotlib nose Pillow
$ pip install -r requirement.txt
```


---

## Step 3: Install Hamaa

Expand Down
97 changes: 97 additions & 0 deletions docs/user/tutorials.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# 教程 Tutorials

本教程主要介绍Hamaa中的一些常见概念以及如何使用Hamaa搭建神经网络。

## Getting started: 1 minutes to Hamaa

在Hamaa中,一个神经网络模型被称为一个model,
其中最基础的一种model叫做`Sequential`,即由网络层按序列依次堆叠而成。

这是一个`Sequential`模型:

```python
from hamaa.models import Sequential

model = Sequential()
```

添加网络层只需使用`add()`:

```python
from hamaa.layers import Dense, Activation

model.add(Dense(input_dim=2, output_dim=4))
model.add(Activation('sigmoid'))
model.add(Dense(output_dim=2))
model.add(Activation('softmax'))
```

设置模型的目标(损失)函数以及优化器:

```python
from hamaa.optimizers import SGD

model.set_objective('categorical_crossentropy')
model.set_optimizer(SGD(lr=0.01, momentum=0.9))
```

打印模型的详细信息:

```python
print model.summary()
```

![print_model_summary](../images/README/print_model_summary.png)

加载数据集(此处采用moons数据集,为两个半弧形组成),并切分其中0.9作为训练集,剩下0.1作为验证集

```python
from hamaa.datasets import datasets
from hamaa.utils.np_utils import split_training_data

x, y = datasets.load_moons_data(nb_data=2000, noise=0.1)
training_data, validation_data = split_training_data(data=(x, y), split_ratio=0.9)
```

接下来就可以开始训练模型:

```python
model.train(training_data=training_data,
nb_epochs=30,
mini_batch_size=100,
verbose=1,
validation_data=validation_data,
log_epoch=1)
```

训练信息如下图所示:
![train](../images/README/train.png)

如果每个epoch耗时比较长,还可以使用进度条功能:
![train_gif](../images/README/train.gif)

训练完之后评估模型的准确率:

```python
print model.evaluate_accuracy(x, y)
```

如果你想直观地查看模型的训练/验证准确率与损失函数值随着训练周期的变化图,可以:
```python
model.plot_training_iteration()
```

<p align="center">
<img width=600 src="../images/README/epochs.png" alt="epochs" />
</p>


最后,如果数据集是二维数据,那么还可以画出决策边界:

```python
model.plot_prediction(data=training_data)
```

<p align="center">
<img width=600 src="../images/README/prediction.png" alt="prediction" />
</p>

0 comments on commit f13e156

Please sign in to comment.