Caffe2 - C++ API
A deep learning, cross platform ML framework
tensor_smoke.cpp
1 #include <cassert>
2 #include <iostream>
3 #include <typeinfo>
4 
5 #include <THPP/tensors/THTensor.hpp>
6 
7 using namespace std;
8 
9 int main() {
10  thpp::FloatTensor* tensor = new thpp::THTensor<float>();
11  thpp::FloatTensor* tensor2 = new thpp::THTensor<float>();
12  assert(tensor->nDim() == 0);
13 
14  tensor->resize({1, 2, 3});
15  assert(tensor->nDim() == 3);
16  int i = 0;
17  for (auto s : tensor->sizes())
18  assert(s == ++i);
19 
20  vector<int64_t> sizes = {2, 2};
21  tensor2->resize(sizes);
22  tensor2->fill(4);
23  tensor->add(*tensor2, 1);
24  assert(tensor->nDim() == 2);
25 
26  for (auto s : tensor->sizes())
27  assert(s == 2);
28  for (int i = 0; i < 2; i++)
29  assert(reinterpret_cast<float*>(tensor->data())[i] == 5);
30 
31  bool thrown = false;
32  try {
33  thpp::IntTensor& a = dynamic_cast<thpp::IntTensor&>(*tensor);
34  } catch (std::bad_cast& e) {
35  thrown = true;
36  }
37  assert(thrown);
38 
39  delete tensor;
40  delete tensor2;
41  cout << "OK" << endl;
42  return 0;
43 }