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.

ops.cc 1.3 kB

11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include "ops.h"
  2. namespace operators {
  3. static float epsilon = 1e-6;
  4. float is_close(float x, float y) {
  5. // 请修改这里的return语句
  6. return (float)(abs(x-y)<epsilon);
  7. }
  8. float sigmoid(float x) {
  9. // 请修改这里的return语句
  10. if(x>=0) return 1.0/(1.0+exp(-x));
  11. else return exp(x)/(1.0+exp(x));
  12. }
  13. float relu(float x) {
  14. // 请修改这里的return语句
  15. return x>0.0?x:0.0;
  16. }
  17. float inv(float x) {
  18. // 请修改这里的return语句
  19. return 1.0/x;
  20. }
  21. float inv_back(float x, float d) {
  22. // 请修改这里的return语句
  23. return -d/(x*x);
  24. }
  25. float relu_back(float x, float d) {
  26. // 请修改这里的return语句
  27. return x>0.0?d*1.0:0.0;
  28. }
  29. auto sumList(const std::vector<float>& vec) -> float {
  30. return reduce(vec, 0.0f, add<float>);
  31. }
  32. auto prodList(const std::vector<float>& vec) -> float {
  33. // 请修改这里的return语句
  34. return reduce(vec, 1.0f, mul<float>);
  35. }
  36. auto addLists(const std::vector<float>& vec1, const std::vector<float>& vec2) -> std::vector<float> {
  37. // 请修改这里的return语句
  38. return zipWith(vec1, vec2, add<float>);
  39. }
  40. auto negList(const std::vector<float>& vec) -> std::vector<float> {
  41. // 请修改这里的return语句
  42. return map(vec,neg<float>);
  43. }
  44. }