tiny_dnn 1.0.0
A header only, dependency-free deep learning framework in C++11
Loading...
Searching...
No Matches
backend_dnn.h
1/*
2 Copyright (c) 2016, Taiga Nomi, Edgar Riba
3 All rights reserved.
4
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions are met:
7 * Redistributions of source code must retain the above copyright
8 notice, this list of conditions and the following disclaimer.
9 * Redistributions in binary form must reproduce the above copyright
10 notice, this list of conditions and the following disclaimer in the
11 documentation and/or other materials provided with the distribution.
12 * Neither the name of the <organization> nor the
13 names of its contributors may be used to endorse or promote products
14 derived from this software without specific prior written permission.
15
16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
17 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
20 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*/
27#pragma once
28
29#include "tiny_dnn/core/backend.h"
30
31namespace tiny_dnn {
32namespace core {
33
34class dnn_backend : public backend {
35 public:
36 // context holds solution-dependent parameters
37 // context should be able to hold any types of structures (like boost::any)
38 dnn_backend() {}
39
40 // core math functions
41
42 void conv2d(const std::vector<tensor_t*>& in_data,
43 std::vector<tensor_t*>& out_data) override {
44 throw nn_error("not implemented yet.");
45 }
46
47 void conv2d_q(const std::vector<tensor_t*>& in_data,
48 std::vector<tensor_t*>& out_data) override {
49 throw nn_error("not implemented yet.");
50 }
51
52 void conv2d_eq(const std::vector<tensor_t*>& in_data,
53 std::vector<tensor_t*>& out_data) override {
54 throw nn_error("not implemented yet.");
55 }
56
57 void conv2d(const std::vector<tensor_t*>& in_data,
58 const std::vector<tensor_t*>& out_data,
59 std::vector<tensor_t*>& out_grad,
60 std::vector<tensor_t*>& in_grad) override {
61 throw nn_error("not implemented yet.");
62 }
63
64 void conv2d_q(const std::vector<tensor_t*>& in_data,
65 const std::vector<tensor_t*>& out_data,
66 std::vector<tensor_t*>& out_grad,
67 std::vector<tensor_t*>& in_grad) override {
68 throw nn_error("not implemented yet.");
69 }
70
71 void deconv2d(const std::vector<tensor_t*>& in_data,
72 std::vector<tensor_t*>& out_data) override {
73 throw nn_error("not implemented yet.");
74 }
75
76 void deconv2d_q(const std::vector<tensor_t*>& in_data,
77 std::vector<tensor_t*>& out_data) override {
78 throw nn_error("not implemented yet.");
79 }
80
81 void deconv2d_eq(const std::vector<tensor_t*>& in_data,
82 std::vector<tensor_t*>& out_data) override {
83 throw nn_error("not implemented yet.");
84 }
85
86 void deconv2d(const std::vector<tensor_t*>& in_data,
87 const std::vector<tensor_t*>& out_data,
88 std::vector<tensor_t*>& out_grad,
89 std::vector<tensor_t*>& in_grad) override {
90 throw nn_error("not implemented yet.");
91 }
92
93 void deconv2d_q(const std::vector<tensor_t*>& in_data,
94 const std::vector<tensor_t*>& out_data,
95 std::vector<tensor_t*>& out_grad,
96 std::vector<tensor_t*>& in_grad) override {
97 throw nn_error("not implemented yet.");
98 }
99
100 void maxpool(const std::vector<tensor_t*>& in_data,
101 std::vector<tensor_t*>& out_data) override {
102 throw nn_error("not implemented yet.");
103 }
104
105 void maxpool(const std::vector<tensor_t*>& in_data,
106 const std::vector<tensor_t*>& out_data,
107 std::vector<tensor_t*>& out_grad,
108 std::vector<tensor_t*>& in_grad) override {
109 throw nn_error("not implemented yet.");
110 }
111
112 void fully(const std::vector<tensor_t*>& in_data,
113 std::vector<tensor_t*>& out_data) override {
114 throw nn_error("not implemented yet.");
115 }
116
117 void fully_q(const std::vector<tensor_t*>& in_data,
118 std::vector<tensor_t*>& out_data) override {
119 throw nn_error("not implemented yet.");
120 }
121
122 void fully_eq(const std::vector<tensor_t*>& in_data,
123 std::vector<tensor_t*>& out_data) override {
124 throw nn_error("not implemented yet.");
125 }
126
127 void fully(const std::vector<tensor_t*>& in_data,
128 const std::vector<tensor_t*>& out_data,
129 std::vector<tensor_t*>& out_grad,
130 std::vector<tensor_t*>& in_grad) override {
131 throw nn_error("not implemented yet.");
132 }
133
134 void fully_q(const std::vector<tensor_t*>& in_data,
135 const std::vector<tensor_t*>& out_data,
136 std::vector<tensor_t*>& out_grad,
137 std::vector<tensor_t*>& in_grad) override {
138 throw nn_error("not implemented yet.");
139 }
140
141 backend_t type() const override { return backend_t::libdnn; }
142};
143
144} // namespace core
145} // namespace tiny_dnn
Definition backend.h:68
Definition backend_dnn.h:34
Simple image utility class.
Definition image.h:94
error exception class for tiny-dnn
Definition nn_error.h:37