You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

memorydata.cpp 1.7 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Tencent is pleased to support the open source community by making ncnn available.
  2. //
  3. // Copyright (C) 2017 THL A29 Limited, a Tencent company. All rights reserved.
  4. //
  5. // Licensed under the BSD 3-Clause License (the "License"); you may not use this file except
  6. // in compliance with the License. You may obtain a copy of the License at
  7. //
  8. // https://opensource.org/licenses/BSD-3-Clause
  9. //
  10. // Unless required by applicable law or agreed to in writing, software distributed
  11. // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
  12. // CONDITIONS OF ANY KIND, either express or implied. See the License for the
  13. // specific language governing permissions and limitations under the License.
  14. #include "memorydata.h"
  15. namespace ncnn {
  16. DEFINE_LAYER_CREATOR(MemoryData)
  17. MemoryData::MemoryData()
  18. {
  19. one_blob_only = false;
  20. support_inplace = false;
  21. }
  22. int MemoryData::load_param(const ParamDict& pd)
  23. {
  24. w = pd.get(0, 0);
  25. h = pd.get(1, 0);
  26. c = pd.get(2, 0);
  27. return 0;
  28. }
  29. int MemoryData::load_model(const ModelBin& mb)
  30. {
  31. if (c != 0)
  32. {
  33. data = mb.load(w, h, c, 1);
  34. }
  35. else if (h != 0)
  36. {
  37. data = mb.load(w, h, 1);
  38. }
  39. else if (w != 0)
  40. {
  41. data = mb.load(w, 1);
  42. }
  43. else // 0 0 0
  44. {
  45. data.create(1);
  46. }
  47. if (data.empty())
  48. return -100;
  49. return 0;
  50. }
  51. int MemoryData::forward(const std::vector<Mat>& /*bottom_blobs*/, std::vector<Mat>& top_blobs, const Option& opt) const
  52. {
  53. Mat& top_blob = top_blobs[0];
  54. top_blob = data.clone(opt.blob_allocator);
  55. if (top_blob.empty())
  56. return -100;
  57. return 0;
  58. }
  59. } // namespace ncnn