Merge pull request #450 from reyoung/feature/pre-commit-hooks-scripts

Feature/pre commit hooks scripts
avx_docs
Yu Yang 9 years ago committed by GitHub
commit 9115ab1c11

@ -13,8 +13,6 @@
# The document of clang-format is
# http://clang.llvm.org/docs/ClangFormat.html
# http://clang.llvm.org/docs/ClangFormatStyleOptions.html
#
# TODO(yuyang18): Add python and other language code style
---
Language: Cpp
BasedOnStyle: Google
@ -22,8 +20,9 @@ IndentWidth: 2
TabWidth: 2
ContinuationIndentWidth: 4
AccessModifierOffset: -2 # The private/protected/public has no indent in class
PointerAlignment: Left # int* p/int& p, not int *p/int &p
Standard: Cpp11
AllowAllParametersOfDeclarationOnNextLine: true
BinPackParameters: false
BinPackArguments: false
...

@ -0,0 +1,24 @@
- repo: https://github.com/Lucas-C/pre-commit-hooks.git
sha: c25201a00e6b0514370501050cf2a8538ac12270
hooks:
- id: remove-crlf
- repo: https://github.com/reyoung/mirrors-yapf.git
sha: v0.13.2
hooks:
- id: yapf
- repo: https://github.com/pre-commit/pre-commit-hooks
sha: 4ef03c4223ad322c7adaa6c6c0efb26b57df3b71
hooks:
- id: check-added-large-files
- id: check-merge-conflict
- id: check-symlinks
- id: detect-private-key
- id: end-of-file-fixer
# TODO(yuyang): trailing whitespace has some bugs on markdown
# files now, please not add it to pre-commit hook now
# - id: trailing-whitespace
#
# TODO(yuyang): debug-statements not fit for Paddle, because
# not all of our python code is runnable. Some are used for
# documenation
# - id: debug-statements

@ -1,4 +1,3 @@
This folder contains scripts used in PaddlePaddle introduction.
- use `bash train.sh` to train a simple linear regression model
- use `python evaluate_model.py` to read model parameters. You can see that `w` and `b` are very close to [2, 0.3].

@ -19,4 +19,3 @@ done
cd $DIR
rm -f *.list
python generate_list.py

@ -14,4 +14,3 @@
"fields": ["id", "title", "genres"]
}
}

@ -37,4 +37,3 @@ paddle train \
--use_gpu=false \
--config_args=is_test=1 \
2>&1 | tee 'test.log'

@ -24,4 +24,3 @@ paddle train \
--show_parameter_stats_period=10 \
--test_all_data_in_one_period=1 \
2>&1 | tee 'train.log'

File diff suppressed because it is too large Load Diff

@ -98,4 +98,3 @@ There, you have recovered the underlying pattern between `X` and `Y` only from o
- <a href="../build/index.html"> Build and Installation </a>
- <a href="../demo/quick_start/index_en.html">Quick Start</a>
- <a href="../demo/index.html">Example and Demo</a>

@ -1,66 +1,66 @@
# 支持双层序列作为输入的Layer
## 概述
在自然语言处理任务中序列是一种常见的数据类型。一个独立的词语可以看作是一个非序列输入或者我们称之为一个0层的序列由词语构成的句子是一个单层序列若干个句子构成一个段落是一个双层的序列。
双层序列是一个嵌套的序列,它的每一个元素,又是一个单层的序列。这是一种非常灵活的数据组织方式,帮助我们构造一些复杂的输入信息。
我们可以按照如下层次定义非序列,单层序列,以及双层序列。
+ 0层序列一个独立的元素类型可以是PaddlePaddle支持的任意输入数据类型
+ 单层序列排成一列的多个元素每个元素是一个0层序列元素之间的顺序是重要的输入信息
+ 双层序列排成一列的多个元素每个元素是一个单层序列称之为双层序列的一个子序列subseqsubseq的每个元素是一个0层序列
在 PaddlePaddle中下面这些Layer能够接受双层序列作为输入完成相应的计算。
## pooling_layer
pooling_layer的使用示例如下详细见<a href = "../../../doc/ui/api/trainer_config_helpers/layers.html#pooling-layer">配置API</a>
```python
seq_pool = pooling_layer(input=layer,
pooling_type=AvgPooling(),
agg_level=AggregateLevel.EACH_SEQUENCE)
```
- `pooling_type` 目前支持两种分别是MaxPooling()和AvgPooling()。
- `agg_level=AggregateLevel.TIMESTEP`时(默认值):
- 作用双层序列经过运算变成一个0层序列或单层序列经过运算变成一个0层序列
- 输入:一个双层序列,或一个单层序列
- 输出一个0层序列即整个输入序列单层或双层的平均值或最大值
- `agg_level=AggregateLevel.EACH_SEQUENCE`时:
- 作用:一个双层序列经过运算变成一个单层序列
- 输入:必须是一个双层序列
- 输出一个单层序列序列的每个元素是原来双层序列每个subseq元素的平均值或最大值
## last_seq 和 first_seq
last_seq的使用示例如下first_seq类似详细见<a href = "../../../doc/ui/api/trainer_config_helpers/layers.html#last-seq">配置API</a>
```python
last = last_seq(input=layer,
agg_level=AggregateLevel.EACH_SEQUENCE)
```
- `agg_level=AggregateLevel.TIMESTEP`时(默认值):
- 作用一个双层序列经过运算变成一个0层序列或一个单层序列经过运算变成一个0层序列
- 输入:一个双层序列或一个单层序列
- 输出一个0层序列即整个输入序列双层或者单层最后一个或第一个元素。
- `agg_level=AggregateLevel.EACH_SEQUENCE`时:
- 作用:一个双层序列经过运算变成一个单层序列
- 输入:必须是一个双层序列
- 输出一个单层序列其中每个元素是双层序列中每个subseq最后一个或第一个元素。
## expand_layer
expand_layer的使用示例如下详细见<a href = "../../../doc/ui/api/trainer_config_helpers/layers.html#expand-layer">配置API</a>
```python
expand = expand_layer(input=layer1,
expand_as=layer2,
expand_level=ExpandLevel.FROM_TIMESTEP)
```
- `expand_level=ExpandLevel.FROM_TIMESTEP`时(默认值):
- 作用一个0层序列经过运算扩展成一个单层序列或者一个双层序列
- 输入layer1必须是一个0层序列是待扩展的数据layer2可以是一个单层序列或者是一个双层序列提供扩展的长度信息
- 输出:一个单层序列,或一个双层序列,输出序列的类型(双层序列,或单层序列)和序列中含有元素的数目同 layer2一致。若输出是单层序列单层序列的每个元素0层序列都是对layer1元素的拷贝若输出是双层序列双层序列每个subseq中每个元素0层序列都是对layer1元素的拷贝
- `expand_level=ExpandLevel.FROM_SEQUENCE`时:
- 作用:一个单层序列经过运算扩展成一个双层序列
- 输入layer1必须是一个单层序列是待扩展的数据layer2必须是一个双层序列提供扩展的长度信息
- 输出一个双层序列序列中含有元素的数目同layer2一致。要求单层序列含有元素的数目0层序列和双层序列含有subseq 的数目一致。单层序列第i个元素0层序列被扩展为一个单层序列构成了输出双层序列的第i个subseq。
# 支持双层序列作为输入的Layer
## 概述
在自然语言处理任务中序列是一种常见的数据类型。一个独立的词语可以看作是一个非序列输入或者我们称之为一个0层的序列由词语构成的句子是一个单层序列若干个句子构成一个段落是一个双层的序列。
双层序列是一个嵌套的序列,它的每一个元素,又是一个单层的序列。这是一种非常灵活的数据组织方式,帮助我们构造一些复杂的输入信息。
我们可以按照如下层次定义非序列,单层序列,以及双层序列。
+ 0层序列一个独立的元素类型可以是PaddlePaddle支持的任意输入数据类型
+ 单层序列排成一列的多个元素每个元素是一个0层序列元素之间的顺序是重要的输入信息
+ 双层序列排成一列的多个元素每个元素是一个单层序列称之为双层序列的一个子序列subseqsubseq的每个元素是一个0层序列
在 PaddlePaddle中下面这些Layer能够接受双层序列作为输入完成相应的计算。
## pooling_layer
pooling_layer的使用示例如下详细见<a href = "../../../doc/ui/api/trainer_config_helpers/layers.html#pooling-layer">配置API</a>
```python
seq_pool = pooling_layer(input=layer,
pooling_type=AvgPooling(),
agg_level=AggregateLevel.EACH_SEQUENCE)
```
- `pooling_type` 目前支持两种分别是MaxPooling()和AvgPooling()。
- `agg_level=AggregateLevel.TIMESTEP`时(默认值):
- 作用双层序列经过运算变成一个0层序列或单层序列经过运算变成一个0层序列
- 输入:一个双层序列,或一个单层序列
- 输出一个0层序列即整个输入序列单层或双层的平均值或最大值
- `agg_level=AggregateLevel.EACH_SEQUENCE`时:
- 作用:一个双层序列经过运算变成一个单层序列
- 输入:必须是一个双层序列
- 输出一个单层序列序列的每个元素是原来双层序列每个subseq元素的平均值或最大值
## last_seq 和 first_seq
last_seq的使用示例如下first_seq类似详细见<a href = "../../../doc/ui/api/trainer_config_helpers/layers.html#last-seq">配置API</a>
```python
last = last_seq(input=layer,
agg_level=AggregateLevel.EACH_SEQUENCE)
```
- `agg_level=AggregateLevel.TIMESTEP`时(默认值):
- 作用一个双层序列经过运算变成一个0层序列或一个单层序列经过运算变成一个0层序列
- 输入:一个双层序列或一个单层序列
- 输出一个0层序列即整个输入序列双层或者单层最后一个或第一个元素。
- `agg_level=AggregateLevel.EACH_SEQUENCE`时:
- 作用:一个双层序列经过运算变成一个单层序列
- 输入:必须是一个双层序列
- 输出一个单层序列其中每个元素是双层序列中每个subseq最后一个或第一个元素。
## expand_layer
expand_layer的使用示例如下详细见<a href = "../../../doc/ui/api/trainer_config_helpers/layers.html#expand-layer">配置API</a>
```python
expand = expand_layer(input=layer1,
expand_as=layer2,
expand_level=ExpandLevel.FROM_TIMESTEP)
```
- `expand_level=ExpandLevel.FROM_TIMESTEP`时(默认值):
- 作用一个0层序列经过运算扩展成一个单层序列或者一个双层序列
- 输入layer1必须是一个0层序列是待扩展的数据layer2可以是一个单层序列或者是一个双层序列提供扩展的长度信息
- 输出:一个单层序列,或一个双层序列,输出序列的类型(双层序列,或单层序列)和序列中含有元素的数目同 layer2一致。若输出是单层序列单层序列的每个元素0层序列都是对layer1元素的拷贝若输出是双层序列双层序列每个subseq中每个元素0层序列都是对layer1元素的拷贝
- `expand_level=ExpandLevel.FROM_SEQUENCE`时:
- 作用:一个单层序列经过运算扩展成一个双层序列
- 输入layer1必须是一个单层序列是待扩展的数据layer2必须是一个双层序列提供扩展的长度信息
- 输出一个双层序列序列中含有元素的数目同layer2一致。要求单层序列含有元素的数目0层序列和双层序列含有subseq 的数目一致。单层序列第i个元素0层序列被扩展为一个单层序列构成了输出双层序列的第i个subseq。

File diff suppressed because it is too large Load Diff

@ -93,4 +93,4 @@ memory只能在`recurrent_group`中定义和使用。memory不能独立存在
使用`beam_search`需要遵循以下约定:
- 单层RNN从一个word生成下一个word。
- 双层RNN即把单层RNN生成后的subseq给拼接成一个新的双层seq。从语义上看也不存在一个subseq直接生成下一个subseq的情况。
- 双层RNN即把单层RNN生成后的subseq给拼接成一个新的双层seq。从语义上看也不存在一个subseq直接生成下一个subseq的情况。

@ -8,4 +8,4 @@ PaddlePaddle 0.8.0b1, compiled with
with_gflags: ON
with_metric_learning:
with_timer: OFF
with_predict_sdk:
with_predict_sdk:

@ -3,4 +3,4 @@ def process(settings, filename):
os.system('shuf %s > %s.shuf' % (filename, filename)) # shuffle before.
with open('%s.shuf' % filename, 'r') as f:
for line in f:
yield get_sample_from_line(line)
yield get_sample_from_line(line)

@ -117,4 +117,4 @@ set_port()
fi
done
}
}

@ -17,5 +17,3 @@ endif()
if(WITH_SWIG_PY)
add_subdirectory(api)
endif()

@ -65,4 +65,3 @@ struct ArgumentsPrivate {
return *(std::shared_ptr<T>*)(rawPtr);
}
};

@ -1,2 +1,2 @@
add_test(NAME test_swig_api
COMMAND bash ${PROJ_ROOT}/paddle/api/test/run_tests.sh)
COMMAND bash ${PROJ_ROOT}/paddle/api/test/run_tests.sh)

@ -69,8 +69,8 @@ class TestMatrix(unittest.TestCase):
def test_numpy(self):
numpy_mat = np.matrix([[1, 2], [3, 4], [5, 6]], dtype="float32")
m = swig_paddle.Matrix.createCpuDenseFromNumpy(numpy_mat)
self.assertEqual(
(int(m.getHeight()), int(m.getWidth())), numpy_mat.shape)
self.assertEqual((int(m.getHeight()), int(m.getWidth())),
numpy_mat.shape)
# the numpy matrix and paddle matrix shared the same memory.
numpy_mat[0, 1] = 342.23

@ -254,4 +254,3 @@ extern __thread cudaStream_t default_stream;
#endif /* __NVCC__ */
#endif /* HL_BASE_H_ */

@ -199,4 +199,3 @@ inline void hl_batch_norm_backward(hl_tensor_descriptor inputDesc,
real *savedInvVar) {}
#endif // HL_CUDA_CUDNN_STUB_H_

@ -718,4 +718,3 @@ void sincos256_ps(v8sf x, v8sf *s, v8sf *c) {
*s = _mm256_xor_ps(xmm1, sign_bit_sin);
*c = _mm256_xor_ps(xmm2, sign_bit_cos);
}

@ -48,4 +48,3 @@ public:
};
} // namespace paddle

@ -80,4 +80,3 @@ void vTanh(const int n, const T* a, T* r);
} // namespace paddle
#endif // MATHFUNCTIONS_H_

@ -10,4 +10,4 @@ add_style_check_target(paddle_parameter ${PARAMETERS_HEADERS})
add_dependencies(paddle_parameter gen_proto_cpp)
if(WITH_TESTING)
add_subdirectory(tests)
endif()
endif()

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save