Return Tensor which has the same dtype and shape with node. Buffer does not have any data yet.
| 88 | // Return Tensor which has the same dtype and shape with node. |
| 89 | // Buffer does not have any data yet. |
| 90 | std::shared_ptr<Tensor> createEmptyTensor(const luci::CircleNode *node) |
| 91 | { |
| 92 | auto tensor = std::make_shared<Tensor>(); |
| 93 | { |
| 94 | tensor->dtype(node->dtype()); |
| 95 | tensor->rank(node->rank()); |
| 96 | for (uint32_t i = 0; i < node->rank(); i++) |
| 97 | tensor->dim(i) = node->dim(i); |
| 98 | |
| 99 | switch (node->dtype()) |
| 100 | { |
| 101 | case loco::DataType::FLOAT32: |
| 102 | tensor->size<loco::DataType::FLOAT32>(numElements(node)); |
| 103 | break; |
| 104 | case loco::DataType::U8: |
| 105 | tensor->size<loco::DataType::U8>(numElements(node)); |
| 106 | break; |
| 107 | case loco::DataType::S16: |
| 108 | tensor->size<loco::DataType::S16>(numElements(node)); |
| 109 | break; |
| 110 | case loco::DataType::S32: |
| 111 | tensor->size<loco::DataType::S32>(numElements(node)); |
| 112 | break; |
| 113 | case loco::DataType::S64: |
| 114 | tensor->size<loco::DataType::S64>(numElements(node)); |
| 115 | break; |
| 116 | default: |
| 117 | throw std::runtime_error("Unsupported input tensor dtype for " + node->name()); |
| 118 | } |
| 119 | } |
| 120 | |
| 121 | return tensor; |
| 122 | } |
| 123 | |
| 124 | } // namespace circle_eval_diff |