{"action":"created","comment":{"url":"https://api.github.com/repos/PaddlePaddle/Anakin/pulls/comments/209163798","pull_request_review_id":145125280,"id":209163798,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwOTE2Mzc5OA==","diff_hunk":"@@ -3,127 +3,255 @@\n #include \"saber/funcs/activation.h\"\n #include \"saber/saber_types.h\"\n #include \"test_saber_func.h\"\n+#include \"test_saber_base.h\"\n #include <vector>\n+#include<cmath>\n \n using namespace anakin::saber;\n+int active = 1;\n+int num_in = 1;\n+int ch_in = 2;\n+int h_in = 3;\n+int w_in = 5;\n+template <typename dtype,typename TargetType_D,typename TargetType_H>\n+void activation_basic(const std::vector<Tensor<TargetType_H>*>& inputs, std::vector<Tensor<TargetType_H>*>& outputs, ActivationParam<TargetType_D>& param){\n \n-template <typename TargetType, typename TargetType_H>\n-void test_activation(Shape input_big_shape, Shape input_shape,\n-                     ActivationParam<TargetType> param, Shape offset, bool is_share_from) {\n-    typedef Tensor<TargetType_H> TensorH;\n-    typedef Tensor<TargetType> TensorD;\n-    Context<TargetType> ctx(0, 1, 1);\n-\n-    TensorD big_input;\n-    TensorD small_input;\n-    TensorD big_output;\n-    TensorD small_output;\n-\n-    big_input.re_alloc(input_big_shape, AK_FLOAT);\n-    big_output.re_alloc(input_big_shape, AK_FLOAT);\n-    small_input.set_shape(input_shape, input_shape);\n-    small_output.set_shape(input_shape, input_shape);\n-    TensorH host_big_input(input_big_shape);\n-    fill_tensor_rand(host_big_input, -1, 1);\n-    big_input.copy_from(host_big_input);\n-    //fill_tensor_device_rand(big_input, -1, 1);\n-\n-    if (is_share_from) {\n-        small_input.share_from(big_input);\n-        small_output.share_from(big_output);\n-    } else {\n-        small_input.share_sub_buffer(big_input, input_shape, offset);\n-        small_output.share_sub_buffer(big_output, input_shape, offset);\n-    }\n+    int num = inputs[0]->num();\n+    int channel = inputs[0]->channel();\n+    int height = inputs[0]->height();\n+    int width = inputs[0]->width();\n \n-    TensorD output_dev;\n-    // start Reshape & doInfer\n+    dtype* dout = (dtype*)outputs[0]->mutable_data();\n+    const dtype* din = (const dtype*)inputs[0]->data();\n+    size_t count = inputs[0]->valid_size();\n+    int size = height * width;\n+    \n+    switch (param.active){\n+         //x > 0 ? x : 0\n+        case Active_relu:\n+            for (size_t i = 0; i < count; i++){\n+                dout[i] = din[i] > 0 ? din[i] : 0;\n+            }\n+            break;\n \n-    std::vector<TensorD*> inputs;\n-    std::vector<TensorD*> outputs;\n+        // sigmoid: 1/(exp(-x) + 1)\n+        case Active_sigmoid:\n \n-    inputs.push_back(&small_input);\n-    outputs.push_back(&small_output);\n+           for (size_t i = 0; i < count; i++){\n+                dout[i] = 1.0f / (exp(-din[i]) + 1.0f);\n+            }\n+            break;\n \n-    Activation<TargetType, AK_FLOAT> act;\n+        // tanh : (exp(x) - exp(-x)) / (exp(x) + exp(-x))\n+        case Active_tanh:\n+            for (size_t i = 0; i < count; i++){\n+                dout[i] =  tanh(din[i]);//(exp(din[i]) - exp(-din[i])) / (exp(din[i]) + exp(-din[i]));\n+            }\n+            break;\n+        \n+        // stanh : b * \\frac{e^{a * x} - e^{-a * x}}{e^{a * x} + e^{-a * x}}\n+        case Active_stanh:\n+            for (size_t i = 0; i < count; i++){\n+                dtype val = din[i] * param.negative_slope;\n+                dout[i] =  param.coef * tanh(val);\n+            }\n+            break;\n \n-    act.compute_output_shape(inputs, outputs, param);\n-    // init assume output tensor has been reshpaed by user.\n-    act.init(inputs, outputs, param, SPECIFY, SABER_IMPL, ctx);\n-    act(inputs, outputs, param, ctx);\n-    typename TensorD::API::stream_t stream = ctx.get_compute_stream();\n-    outputs[0]->record_event(stream);\n-    outputs[0]->sync();\n-    print_tensor(big_output);\n-    print_tensor(big_input);\n-    if (param.prelu_param.slope) {\n-        print_tensor((*param.prelu_param.slope));\n-    }\n-    Tensor<TargetType>::API::device_sync();\n-#ifdef USE_CUDA\n-    CUDA_POST_KERNEL_CHECK;\n-#endif\n-}\n+        // x > 0 ? x : 0;\n+        // x < threshold ? x : threshold\n+        case Active_clipped_relu:\n+             for (size_t i = 0; i < count; i++){\n+                 const dtype threshold = param.coef;\n+                dout[i] = din[i] > 0 ? (din[i] < threshold ? din[i] : threshold) : 0;\n+             }\n+            break;\n \n-template <typename TargetType, typename TargetType_H>\n-void test_accuracy(int num, int channel, int height, int width) {\n+        //elu:  x > 0 ? x : coef * (exp(x) - 1)\n+        case Active_elu:\n+            for (size_t i = 0; i < count; i++){\n+                dout[i] =  din[i] > 0 ? din[i] : param.coef * (exp(din[i]) - 1);\n+            }\n+            break;\n \n-    typedef Tensor<TargetType_H> TensorH;\n-    typedef Tensor<TargetType> TensorD;\n \n-    Shape input_shape({num, channel, height, width}, Layout_NCHW);\n-    Shape input_big_shape({num, channel, height+1, width+1}, Layout_NCHW);\n-    Shape offset_0({0, 0, 0, 0}, Layout_NCHW);\n-    Shape offset_1({0, 0, 1, 1}, Layout_NCHW);\n-    Shape slope_shape_0({1, channel, 1, 1}, Layout_NCHW);\n-    Shape slope_shape_1({1, 1, 1, 1}, Layout_NCHW);\n-    TensorD prelu_slope_0;\n-    prelu_slope_0.reshape(slope_shape_0);\n-    PreluParam<TargetType> prelu_0(false, &prelu_slope_0);\n-\n-    TensorD prelu_slope_1;\n-    prelu_slope_1.reshape(slope_shape_1);\n-    PreluParam<TargetType> prelu_1(true, &prelu_slope_1);\n-    fill_tensor_rand(prelu_slope_0, 0, 1);\n-    fill_tensor_rand(prelu_slope_1, 0, 1);\n-\n-    ActivationParam<TargetType> param_elu(Active_elu, 0.1f, 0.1f);\n-    ActivationParam<TargetType> param_relu(Active_relu, 0.0f, 0.0f);\n-    ActivationParam<TargetType> param_sigmoid(Active_sigmoid, 0.1f, 0.1f);\n-    ActivationParam<TargetType> param_tanh(Active_tanh, 0.1f, 0.1f);\n-    ActivationParam<TargetType> param_prelu_0(Active_prelu, 0.f, 0.f, prelu_0);\n-    ActivationParam<TargetType> param_prelu_1(Active_prelu, 0.f, 0.f, prelu_1);\n-\n-    for (ActivationParam<TargetType> param : {param_elu, param_relu, param_sigmoid, param_tanh, param_prelu_0, param_prelu_1}) {\n-        //for (ActivationParam<TensorD> param : {param_sigmoid}) {\n-        for (auto share_from : {false, true}) {\n-            for (auto offset: {offset_0, offset_1}) {\n-                test_activation<TargetType, TargetType_H>(input_big_shape,\n-                                input_shape, param, offset, share_from);\n+        //prelu: x > 0 ? x : slope[c] * x\n+        case Active_prelu:\n+            auto prelu_param  = param.prelu_param;\n+            for (int n = 0; n < num; n++){\n+                const dtype *in_ptr = din + n * channel * size;\n+                dtype *out_ptr = dout + n * channel * size;\n+              //  const dtype *slope_ptr = nullptr;\n+                Tensor<TargetType_D>* slop_dev;\n+                slop_dev = prelu_param.slope;\n+                Shape shape = slop_dev->valid_shape();\n+                Tensor<TargetType_H>* slop_host;//(shape);\n+               // LOG(INFO) << \"slop_dev: \" << shape[0] << \", \" << shape[2];  \n+                //slop_host->set_shape(shape);\n+                slop_host = new Tensor<TargetType_H>(shape);","path":"test/saber/test_saber_activation.cpp","position":137,"original_position":173,"commit_id":"cec01fef5897f4db51ba2057d2a2571ab4fb5ac1","original_commit_id":"75055ad423c01b91c120a2f507f1f5822525cfd5","user":{"login":"chenjiaoAngel","id":38650344,"node_id":"MDQ6VXNlcjM4NjUwMzQ0","avatar_url":"https://avatars2.githubusercontent.com/u/38650344?v=4","gravatar_id":"","url":"https://api.github.com/users/chenjiaoAngel","html_url":"https://github.com/chenjiaoAngel","followers_url":"https://api.github.com/users/chenjiaoAngel/followers","following_url":"https://api.github.com/users/chenjiaoAngel/following{/other_user}","gists_url":"https://api.github.com/users/chenjiaoAngel/gists{/gist_id}","starred_url":"https://api.github.com/users/chenjiaoAngel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chenjiaoAngel/subscriptions","organizations_url":"https://api.github.com/users/chenjiaoAngel/orgs","repos_url":"https://api.github.com/users/chenjiaoAngel/repos","events_url":"https://api.github.com/users/chenjiaoAngel/events{/privacy}","received_events_url":"https://api.github.com/users/chenjiaoAngel/received_events","type":"User","site_admin":false},"body":"已修改，请查阅","created_at":"2018-08-10T07:11:40Z","updated_at":"2018-08-10T07:11:41Z","html_url":"https://github.com/PaddlePaddle/Anakin/pull/295#discussion_r209163798","pull_request_url":"https://api.github.com/repos/PaddlePaddle/Anakin/pulls/295","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/PaddlePaddle/Anakin/pulls/comments/209163798"},"html":{"href":"https://github.com/PaddlePaddle/Anakin/pull/295#discussion_r209163798"},"pull_request":{"href":"https://api.github.com/repos/PaddlePaddle/Anakin/pulls/295"}},"in_reply_to_id":209133522},"pull_request":{"url":"https://api.github.com/repos/PaddlePaddle/Anakin/pulls/295","id":207220462,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA3MjIwNDYy","html_url":"https://github.com/PaddlePaddle/Anakin/pull/295","diff_url":"https://github.com/PaddlePaddle/Anakin/pull/295.diff","patch_url":"https://github.com/PaddlePaddle/Anakin/pull/295.patch","issue_url":"https://api.github.com/repos/PaddlePaddle/Anakin/issues/295","number":295,"state":"open","locked":false,"title":"add activation op","user":{"login":"chenjiaoAngel","id":38650344,"node_id":"MDQ6VXNlcjM4NjUwMzQ0","avatar_url":"https://avatars2.githubusercontent.com/u/38650344?v=4","gravatar_id":"","url":"https://api.github.com/users/chenjiaoAngel","html_url":"https://github.com/chenjiaoAngel","followers_url":"https://api.github.com/users/chenjiaoAngel/followers","following_url":"https://api.github.com/users/chenjiaoAngel/following{/other_user}","gists_url":"https://api.github.com/users/chenjiaoAngel/gists{/gist_id}","starred_url":"https://api.github.com/users/chenjiaoAngel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chenjiaoAngel/subscriptions","organizations_url":"https://api.github.com/users/chenjiaoAngel/orgs","repos_url":"https://api.github.com/users/chenjiaoAngel/repos","events_url":"https://api.github.com/users/chenjiaoAngel/events{/privacy}","received_events_url":"https://api.github.com/users/chenjiaoAngel/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-08-09T07:10:18Z","updated_at":"2018-08-10T07:11:41Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c805d5258fa5dfac0f8ba085104d145a87198db2","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/PaddlePaddle/Anakin/pulls/295/commits","review_comments_url":"https://api.github.com/repos/PaddlePaddle/Anakin/pulls/295/comments","review_comment_url":"https://api.github.com/repos/PaddlePaddle/Anakin/pulls/comments{/number}","comments_url":"https://api.github.com/repos/PaddlePaddle/Anakin/issues/295/comments","statuses_url":"https://api.github.com/repos/PaddlePaddle/Anakin/statuses/cec01fef5897f4db51ba2057d2a2571ab4fb5ac1","head":{"label":"chenjiaoAngel:dev_v5","ref":"dev_v5","sha":"cec01fef5897f4db51ba2057d2a2571ab4fb5ac1","user":{"login":"chenjiaoAngel","id":38650344,"node_id":"MDQ6VXNlcjM4NjUwMzQ0","avatar_url":"https://avatars2.githubusercontent.com/u/38650344?v=4","gravatar_id":"","url":"https://api.github.com/users/chenjiaoAngel","html_url":"https://github.com/chenjiaoAngel","followers_url":"https://api.github.com/users/chenjiaoAngel/followers","following_url":"https://api.github.com/users/chenjiaoAngel/following{/other_user}","gists_url":"https://api.github.com/users/chenjiaoAngel/gists{/gist_id}","starred_url":"https://api.github.com/users/chenjiaoAngel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chenjiaoAngel/subscriptions","organizations_url":"https://api.github.com/users/chenjiaoAngel/orgs","repos_url":"https://api.github.com/users/chenjiaoAngel/repos","events_url":"https://api.github.com/users/chenjiaoAngel/events{/privacy}","received_events_url":"https://api.github.com/users/chenjiaoAngel/received_events","type":"User","site_admin":false},"repo":{"id":133920067,"node_id":"MDEwOlJlcG9zaXRvcnkxMzM5MjAwNjc=","name":"Anakin","full_name":"chenjiaoAngel/Anakin","owner":{"login":"chenjiaoAngel","id":38650344,"node_id":"MDQ6VXNlcjM4NjUwMzQ0","avatar_url":"https://avatars2.githubusercontent.com/u/38650344?v=4","gravatar_id":"","url":"https://api.github.com/users/chenjiaoAngel","html_url":"https://github.com/chenjiaoAngel","followers_url":"https://api.github.com/users/chenjiaoAngel/followers","following_url":"https://api.github.com/users/chenjiaoAngel/following{/other_user}","gists_url":"https://api.github.com/users/chenjiaoAngel/gists{/gist_id}","starred_url":"https://api.github.com/users/chenjiaoAngel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chenjiaoAngel/subscriptions","organizations_url":"https://api.github.com/users/chenjiaoAngel/orgs","repos_url":"https://api.github.com/users/chenjiaoAngel/repos","events_url":"https://api.github.com/users/chenjiaoAngel/events{/privacy}","received_events_url":"https://api.github.com/users/chenjiaoAngel/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/chenjiaoAngel/Anakin","description":null,"fork":true,"url":"https://api.github.com/repos/chenjiaoAngel/Anakin","forks_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/forks","keys_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/teams","hooks_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/hooks","issue_events_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/issues/events{/number}","events_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/events","assignees_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/assignees{/user}","branches_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/branches{/branch}","tags_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/tags","blobs_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/git/refs{/sha}","trees_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/statuses/{sha}","languages_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/languages","stargazers_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/stargazers","contributors_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/contributors","subscribers_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/subscribers","subscription_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/subscription","commits_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/commits{/sha}","git_commits_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/git/commits{/sha}","comments_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/comments{/number}","issue_comment_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/issues/comments{/number}","contents_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/contents/{+path}","compare_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/merges","archive_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/downloads","issues_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/issues{/number}","pulls_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/pulls{/number}","milestones_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/milestones{/number}","notifications_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/labels{/name}","releases_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/releases{/id}","deployments_url":"https://api.github.com/repos/chenjiaoAngel/Anakin/deployments","created_at":"2018-05-18T07:35:23Z","updated_at":"2018-08-10T06:44:41Z","pushed_at":"2018-08-10T07:10:25Z","git_url":"git://github.com/chenjiaoAngel/Anakin.git","ssh_url":"git@github.com:chenjiaoAngel/Anakin.git","clone_url":"https://github.com/chenjiaoAngel/Anakin.git","svn_url":"https://github.com/chenjiaoAngel/Anakin","homepage":null,"size":18696,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"PaddlePaddle:dev_v2","ref":"dev_v2","sha":"91cb676187fe4f49f664e15511d0000d714abb3a","user":{"login":"PaddlePaddle","id":23534030,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIzNTM0MDMw","avatar_url":"https://avatars3.githubusercontent.com/u/23534030?v=4","gravatar_id":"","url":"https://api.github.com/users/PaddlePaddle","html_url":"https://github.com/PaddlePaddle","followers_url":"https://api.github.com/users/PaddlePaddle/followers","following_url":"https://api.github.com/users/PaddlePaddle/following{/other_user}","gists_url":"https://api.github.com/users/PaddlePaddle/gists{/gist_id}","starred_url":"https://api.github.com/users/PaddlePaddle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PaddlePaddle/subscriptions","organizations_url":"https://api.github.com/users/PaddlePaddle/orgs","repos_url":"https://api.github.com/users/PaddlePaddle/repos","events_url":"https://api.github.com/users/PaddlePaddle/events{/privacy}","received_events_url":"https://api.github.com/users/PaddlePaddle/received_events","type":"Organization","site_admin":false},"repo":{"id":133907444,"node_id":"MDEwOlJlcG9zaXRvcnkxMzM5MDc0NDQ=","name":"Anakin","full_name":"PaddlePaddle/Anakin","owner":{"login":"PaddlePaddle","id":23534030,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIzNTM0MDMw","avatar_url":"https://avatars3.githubusercontent.com/u/23534030?v=4","gravatar_id":"","url":"https://api.github.com/users/PaddlePaddle","html_url":"https://github.com/PaddlePaddle","followers_url":"https://api.github.com/users/PaddlePaddle/followers","following_url":"https://api.github.com/users/PaddlePaddle/following{/other_user}","gists_url":"https://api.github.com/users/PaddlePaddle/gists{/gist_id}","starred_url":"https://api.github.com/users/PaddlePaddle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PaddlePaddle/subscriptions","organizations_url":"https://api.github.com/users/PaddlePaddle/orgs","repos_url":"https://api.github.com/users/PaddlePaddle/repos","events_url":"https://api.github.com/users/PaddlePaddle/events{/privacy}","received_events_url":"https://api.github.com/users/PaddlePaddle/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/PaddlePaddle/Anakin","description":"High performance  Cross-platform Inference-engine, you could run Anakin on x86-cpu,arm, nv-gpu, amd-gpu,bitmain and cambricon devices.","fork":false,"url":"https://api.github.com/repos/PaddlePaddle/Anakin","forks_url":"https://api.github.com/repos/PaddlePaddle/Anakin/forks","keys_url":"https://api.github.com/repos/PaddlePaddle/Anakin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PaddlePaddle/Anakin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PaddlePaddle/Anakin/teams","hooks_url":"https://api.github.com/repos/PaddlePaddle/Anakin/hooks","issue_events_url":"https://api.github.com/repos/PaddlePaddle/Anakin/issues/events{/number}","events_url":"https://api.github.com/repos/PaddlePaddle/Anakin/events","assignees_url":"https://api.github.com/repos/PaddlePaddle/Anakin/assignees{/user}","branches_url":"https://api.github.com/repos/PaddlePaddle/Anakin/branches{/branch}","tags_url":"https://api.github.com/repos/PaddlePaddle/Anakin/tags","blobs_url":"https://api.github.com/repos/PaddlePaddle/Anakin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PaddlePaddle/Anakin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PaddlePaddle/Anakin/git/refs{/sha}","trees_url":"https://api.github.com/repos/PaddlePaddle/Anakin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PaddlePaddle/Anakin/statuses/{sha}","languages_url":"https://api.github.com/repos/PaddlePaddle/Anakin/languages","stargazers_url":"https://api.github.com/repos/PaddlePaddle/Anakin/stargazers","contributors_url":"https://api.github.com/repos/PaddlePaddle/Anakin/contributors","subscribers_url":"https://api.github.com/repos/PaddlePaddle/Anakin/subscribers","subscription_url":"https://api.github.com/repos/PaddlePaddle/Anakin/subscription","commits_url":"https://api.github.com/repos/PaddlePaddle/Anakin/commits{/sha}","git_commits_url":"https://api.github.com/repos/PaddlePaddle/Anakin/git/commits{/sha}","comments_url":"https://api.github.com/repos/PaddlePaddle/Anakin/comments{/number}","issue_comment_url":"https://api.github.com/repos/PaddlePaddle/Anakin/issues/comments{/number}","contents_url":"https://api.github.com/repos/PaddlePaddle/Anakin/contents/{+path}","compare_url":"https://api.github.com/repos/PaddlePaddle/Anakin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PaddlePaddle/Anakin/merges","archive_url":"https://api.github.com/repos/PaddlePaddle/Anakin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PaddlePaddle/Anakin/downloads","issues_url":"https://api.github.com/repos/PaddlePaddle/Anakin/issues{/number}","pulls_url":"https://api.github.com/repos/PaddlePaddle/Anakin/pulls{/number}","milestones_url":"https://api.github.com/repos/PaddlePaddle/Anakin/milestones{/number}","notifications_url":"https://api.github.com/repos/PaddlePaddle/Anakin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PaddlePaddle/Anakin/labels{/name}","releases_url":"https://api.github.com/repos/PaddlePaddle/Anakin/releases{/id}","deployments_url":"https://api.github.com/repos/PaddlePaddle/Anakin/deployments","created_at":"2018-05-18T05:32:25Z","updated_at":"2018-08-10T05:37:19Z","pushed_at":"2018-08-10T07:10:26Z","git_url":"git://github.com/PaddlePaddle/Anakin.git","ssh_url":"git@github.com:PaddlePaddle/Anakin.git","clone_url":"https://github.com/PaddlePaddle/Anakin.git","svn_url":"https://github.com/PaddlePaddle/Anakin","homepage":"https://anakin.baidu.com/","size":18510,"stargazers_count":219,"watchers_count":219,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":77,"mirror_url":null,"archived":false,"open_issues_count":35,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":77,"open_issues":35,"watchers":219,"default_branch":"developing"}},"_links":{"self":{"href":"https://api.github.com/repos/PaddlePaddle/Anakin/pulls/295"},"html":{"href":"https://github.com/PaddlePaddle/Anakin/pull/295"},"issue":{"href":"https://api.github.com/repos/PaddlePaddle/Anakin/issues/295"},"comments":{"href":"https://api.github.com/repos/PaddlePaddle/Anakin/issues/295/comments"},"review_comments":{"href":"https://api.github.com/repos/PaddlePaddle/Anakin/pulls/295/comments"},"review_comment":{"href":"https://api.github.com/repos/PaddlePaddle/Anakin/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/PaddlePaddle/Anakin/pulls/295/commits"},"statuses":{"href":"https://api.github.com/repos/PaddlePaddle/Anakin/statuses/cec01fef5897f4db51ba2057d2a2571ab4fb5ac1"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"chenjiaoAngel"}}