質問編集履歴

1

サンプルの追加

2018/07/28 08:50

投稿

_Victorique__
_Victorique__

スコア1392

test CHANGED
File without changes
test CHANGED
@@ -101,3 +101,105 @@
101
101
  }
102
102
 
103
103
  ```
104
+
105
+
106
+
107
+ ###追記
108
+
109
+ 入力を作る処理のサンプルを載せておきます。
110
+
111
+ カラー画像の場合、RGBの3チャネルあるはずなのでこのサンプル通りにはならないと思います。
112
+
113
+
114
+
115
+
116
+
117
+ ```C++
118
+
119
+ auto tensor = tensorflow::Tensor(tensorflow::DT_FLOAT, tensorflow::TensorShape({N_data, N_vec}));
120
+
121
+ auto mat = tensor.tensor<float, 2>();
122
+
123
+ mat.setZero();
124
+
125
+
126
+
127
+ std::ifstream fin(filename, std::ios_base::in | std::ios_base::binary);
128
+
129
+ assert(!fin.fail());
130
+
131
+ boost::iostreams::filtering_istream s;
132
+
133
+ s.push(fin);
134
+
135
+ char c;
136
+
137
+
138
+
139
+ for (int i=0; i<N_header; ++i) {
140
+
141
+ s.get(c);
142
+
143
+ }
144
+
145
+ for (int n=0; n<N_data; ++n) {
146
+
147
+ for (int h=0; h<N_height; ++h) {
148
+
149
+ for (int w=0; w<N_width; ++w) {
150
+
151
+ s.get(c);
152
+
153
+ mat(n, h*N_width + w) = static_cast<float>(static_cast<uint8_t>(c)) / 255.0;
154
+
155
+ }
156
+
157
+ }
158
+
159
+ }
160
+
161
+ return tensor
162
+
163
+ ```
164
+
165
+ tensor.h内の記述を見てみると、
166
+
167
+ ```C++
168
+
169
+ /// Example:
170
+
171
+ ///
172
+
173
+ /// ```c++
174
+
175
+ ///
176
+
177
+ /// typedef float T;
178
+
179
+ /// Tensor my_mat(...built with Shape{rows: 3, cols: 5}...);
180
+
181
+ /// auto mat = my_mat.matrix<T>(); // 2D Eigen::Tensor, 3 x 5.
182
+
183
+ /// auto mat = my_mat.tensor<T, 2>(); // 2D Eigen::Tensor, 3 x 5.
184
+
185
+ /// auto vec = my_mat.vec<T>(); // CHECK fails as my_mat is 2D.
186
+
187
+ /// auto vec = my_mat.tensor<T, 3>(); // CHECK fails as my_mat is 2D.
188
+
189
+ /// auto mat = my_mat.matrix<int32>();// CHECK fails as type mismatch.
190
+
191
+ ///
192
+
193
+ /// ```
194
+
195
+ ```
196
+
197
+ この中で言えば
198
+
199
+ ```C++
200
+
201
+ auto vec = my_mat.tensor<T, 3>(); // CHECK fails as my_mat is 2D.
202
+
203
+ ```
204
+
205
+ に該当するのかなと考えましたがそれを確証づけることができませんでした。