Skip to content

Commit 7955e3f

Browse files
committed
Merge branch 'develop' of https://github.com/PaddlePaddle/Paddle into macosx
2 parents d330b6a + 4311bfe commit 7955e3f

File tree

150 files changed

+4039
-1409
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

150 files changed

+4039
-1409
lines changed

.travis.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ cache:
44
- $HOME/third_party
55
- $HOME/.ccache
66
- $HOME/.cache/pip
7+
- $HOME/Library/Caches/Homebrew
78
sudo: required
89
dist: trusty
910
os:
@@ -54,7 +55,9 @@ before_install:
5455
fi
5556
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then paddle/scripts/travis/before_install.osx.sh; fi
5657
- if [[ "$JOB" == "PRE_COMMIT" ]]; then sudo ln -s /usr/bin/clang-format-3.8 /usr/bin/clang-format; fi
57-
- pip install numpy wheel protobuf sphinx recommonmark sphinx_rtd_theme virtualenv pre-commit requests==2.9.2 LinkChecker
58+
# Paddle is using protobuf 3.1 currently. Protobuf 3.2 breaks the compatibility. So we specify the python
59+
# protobuf version.
60+
- pip install numpy wheel 'protobuf==3.1' sphinx recommonmark sphinx_rtd_theme virtualenv pre-commit requests==2.9.2 LinkChecker
5861
script:
5962
- paddle/scripts/travis/main.sh
6063
notifications:

cmake/cblas.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
set(CBLAS_FOUND OFF)
1717

1818
## Find MKL First.
19-
set(MKL_ROOT $ENV{MKLROOT} CACHE PATH "Folder contains MKL")
19+
set(INTEL_ROOT "/opt/intel" CACHE PATH "Folder contains intel libs")
20+
set(MKL_ROOT ${INTEL_ROOT}/mkl CACHE PATH "Folder contains MKL")
2021

2122
find_path(MKL_INCLUDE_DIR mkl.h PATHS
2223
${MKL_ROOT}/include)

demo/mnist/api_train.py

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,15 @@
66
77
The user api could be simpler and carefully designed.
88
"""
9-
import py_paddle.swig_paddle as api
10-
from py_paddle import DataProviderConverter
11-
import paddle.trainer.PyDataProvider2 as dp
12-
import numpy as np
139
import random
14-
from mnist_util import read_from_mnist
15-
from paddle.trainer_config_helpers import *
16-
import paddle.v2
1710

11+
import numpy as np
12+
import paddle.v2 as paddle_v2
13+
import py_paddle.swig_paddle as api
14+
from paddle.trainer_config_helpers import *
15+
from py_paddle import DataProviderConverter
1816

19-
def network_config():
20-
imgs = data_layer(name='pixel', size=784)
21-
hidden1 = fc_layer(input=imgs, size=200)
22-
hidden2 = fc_layer(input=hidden1, size=200)
23-
inference = fc_layer(input=hidden2, size=10, act=SoftmaxActivation())
24-
cost = classification_cost(
25-
input=inference, label=data_layer(
26-
name='label', size=10))
27-
outputs(cost)
17+
from mnist_util import read_from_mnist
2818

2919

3020
def init_parameter(network):
@@ -67,7 +57,7 @@ def input_order_converter(generator):
6757
def main():
6858
api.initPaddle("-use_gpu=false", "-trainer_count=4") # use 4 cpu cores
6959

70-
optimizer = paddle.v2.optimizer.Adam(
60+
optimizer = paddle_v2.optimizer.Adam(
7161
learning_rate=1e-4,
7262
batch_size=1000,
7363
model_average=ModelAverage(average_window=0.5),
@@ -79,8 +69,20 @@ def main():
7969
updater = optimizer.create_local_updater()
8070
assert isinstance(updater, api.ParameterUpdater)
8171

72+
# define network
73+
images = paddle_v2.layer.data(
74+
name='pixel', type=paddle_v2.data_type.dense_vector(784))
75+
label = paddle_v2.layer.data(
76+
name='label', type=paddle_v2.data_type.integer_value(10))
77+
hidden1 = paddle_v2.layer.fc(input=images, size=200)
78+
hidden2 = paddle_v2.layer.fc(input=hidden1, size=200)
79+
inference = paddle_v2.layer.fc(input=hidden2,
80+
size=10,
81+
act=paddle_v2.activation.Softmax())
82+
cost = paddle_v2.layer.classification_cost(input=inference, label=label)
83+
8284
# Create Simple Gradient Machine.
83-
model_config = parse_network_config(network_config)
85+
model_config = paddle_v2.layer.parse_network(cost)
8486
m = api.GradientMachine.createFromConfigProto(model_config,
8587
api.CREATE_MODE_NORMAL,
8688
optimizer.enable_types())
@@ -97,8 +99,7 @@ def main():
9799

98100
# DataProvider Converter is a utility convert Python Object to Paddle C++
99101
# Input. The input format is as same as Paddle's DataProvider.
100-
converter = DataProviderConverter(
101-
input_types=[dp.dense_vector(784), dp.integer_value(10)])
102+
converter = DataProviderConverter(input_types=[images.type, label.type])
102103

103104
train_file = './data/raw_data/train'
104105
test_file = './data/raw_data/t10k'

demo/mnist/api_train_v2.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import numpy
2+
import paddle.v2 as paddle
3+
4+
import mnist_util
5+
6+
7+
def train_reader():
8+
train_file = './data/raw_data/train'
9+
generator = mnist_util.read_from_mnist(train_file)
10+
for item in generator:
11+
yield item
12+
13+
14+
def main():
15+
paddle.init(use_gpu=False, trainer_count=1)
16+
17+
# define network topology
18+
images = paddle.layer.data(
19+
name='pixel', type=paddle.data_type.dense_vector(784))
20+
label = paddle.layer.data(
21+
name='label', type=paddle.data_type.integer_value(10))
22+
hidden1 = paddle.layer.fc(input=images, size=200)
23+
hidden2 = paddle.layer.fc(input=hidden1, size=200)
24+
inference = paddle.layer.fc(input=hidden2,
25+
size=10,
26+
act=paddle.activation.Softmax())
27+
cost = paddle.layer.classification_cost(input=inference, label=label)
28+
29+
parameters = paddle.parameters.create(cost)
30+
for param_name in parameters.keys():
31+
array = parameters.get(param_name)
32+
array[:] = numpy.random.uniform(low=-1.0, high=1.0, size=array.shape)
33+
parameters.set(parameter_name=param_name, value=array)
34+
35+
adam_optimizer = paddle.optimizer.Adam(learning_rate=0.01)
36+
37+
def event_handler(event):
38+
if isinstance(event, paddle.event.EndIteration):
39+
para = parameters.get('___fc_2__.w0')
40+
print "Pass %d, Batch %d, Cost %f, Weight Mean Of Fc 2 is %f" % (
41+
event.pass_id, event.batch_id, event.cost, para.mean())
42+
43+
else:
44+
pass
45+
46+
trainer = paddle.trainer.SGD(update_equation=adam_optimizer)
47+
48+
trainer.train(train_data_reader=train_reader,
49+
topology=cost,
50+
parameters=parameters,
51+
event_handler=event_handler,
52+
batch_size=32, # batch size should be refactor in Data reader
53+
data_types={ # data_types will be removed, It should be in
54+
# network topology
55+
'pixel': images.type,
56+
'label': label.type
57+
})
58+
59+
60+
if __name__ == '__main__':
61+
main()

demo/sentiment/dataprovider.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,6 @@ def process(settings, file_name):
3232
word_slot = [
3333
settings.word_dict[w] for w in words if w in settings.word_dict
3434
]
35+
if not word_slot:
36+
continue
3537
yield word_slot, label

demo/sentiment/predict.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,11 @@ def main():
138138

139139
batch = []
140140
for line in sys.stdin:
141-
batch.append([predict.get_index(line)])
141+
words = predict.get_index(line)
142+
if words:
143+
batch.append([words])
144+
else:
145+
print('All the words in [%s] are not in the dictionary.' % line)
142146
if len(batch) == batch_size:
143147
predict.batch_predict(batch)
144148
batch = []

doc/api/trainer_config_helpers/layers.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,12 @@ concat_layer
279279
:members: concat_layer
280280
:noindex:
281281

282+
seq_concat_layer
283+
----------------
284+
.. automodule:: paddle.trainer_config_helpers.layers
285+
:members: seq_concat_layer
286+
:noindex:
287+
282288
Reshaping Layers
283289
================
284290

@@ -302,6 +308,12 @@ repeat_layer
302308
:members: repeat_layer
303309
:noindex:
304310

311+
seq_reshape_layer
312+
-----------------
313+
.. automodule:: paddle.trainer_config_helpers.layers
314+
:members: seq_reshape_layer
315+
:noindex:
316+
305317
Math Layers
306318
===========
307319

0 commit comments

Comments
 (0)