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.

OptimizerApi.cs 2.2 kB

4 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using Tensorflow.Keras.ArgsDefinition;
  2. using Tensorflow.Keras.Engine;
  3. namespace Tensorflow.Keras.Optimizers
  4. {
  5. public class OptimizerApi: IOptimizerApi
  6. {
  7. /// <summary>
  8. /// Adam optimization is a stochastic gradient descent method that is based on
  9. /// adaptive estimation of first-order and second-order moments.
  10. /// </summary>
  11. /// <param name="learning_rate"></param>
  12. /// <param name="beta_1"></param>
  13. /// <param name="beta_2"></param>
  14. /// <param name="epsilon"></param>
  15. /// <param name="amsgrad"></param>
  16. /// <param name="name"></param>
  17. /// <returns></returns>
  18. public IOptimizer Adam(float learning_rate = 0.001f,
  19. float beta_1 = 0.9f,
  20. float beta_2 = 0.999f,
  21. float epsilon = 1e-7f,
  22. bool amsgrad = false,
  23. string name = "Adam")
  24. => new Adam(learning_rate: learning_rate,
  25. beta_1: beta_1,
  26. beta_2: beta_2,
  27. epsilon: epsilon,
  28. amsgrad: amsgrad,
  29. name: name);
  30. /// <summary>
  31. /// Construct a new RMSprop optimizer.
  32. /// </summary>
  33. /// <param name="learning_rate"></param>
  34. /// <param name="rho"></param>
  35. /// <param name="momentum"></param>
  36. /// <param name="epsilon"></param>
  37. /// <param name="centered"></param>
  38. /// <param name="name"></param>
  39. /// <returns></returns>
  40. public IOptimizer RMSprop(float learning_rate = 0.001f,
  41. float rho = 0.9f,
  42. float momentum = 0.0f,
  43. float epsilon = 1e-7f,
  44. bool centered = false,
  45. string name = "RMSprop")
  46. => new RMSprop(new RMSpropArgs
  47. {
  48. LearningRate = learning_rate,
  49. RHO = rho,
  50. Momentum = momentum,
  51. Epsilon = epsilon,
  52. Centered = centered,
  53. Name = name
  54. });
  55. public IOptimizer SGD(float learning_rate)
  56. => new SGD(learning_rate);
  57. }
  58. }