提交 bd2469f2 编写于 作者: H Helin Wang

correct optimizer release, add test

上级 6ee5bc81
......@@ -3,34 +3,44 @@
#include "optimizer.h"
typedef int (*update_func)(void*, void *, paddle_element_type, const void*, int);
typedef void (*release_func)(void*);
typedef struct paddle_optimizer{
update_func func;
update_func update;
release_func release;
void* optimizer;
} paddle_optimizer;
void paddle_release_optimizer(paddle_optimizer* o) {
o->release(o->optimizer);
free(o);
}
int paddle_update_parameter(paddle_optimizer* o, void *buffer, paddle_element_type element_type, const void* gradient, int num_bytes) {
return o->func(o->optimizer, buffer, element_type, gradient, num_bytes);
return o->update(o->optimizer, buffer, element_type, gradient, num_bytes);
}
typedef struct {
double learning_rate;
} SGD_optimizer;
int paddle_SGD_update_parameter(void* optimizer, void *buffer, paddle_element_type element_type, const void* gradient, int num_bytes) {
int update_SGD(void* optimizer, void *buffer, paddle_element_type element_type, const void* gradient, int num_bytes) {
SGD_optimizer* o = (SGD_optimizer*)optimizer;
// TODO
return 0;
}
void release_SGD(void *optimizer) {
SGD_optimizer* o = (SGD_optimizer*)optimizer;
// nothing allocated on heap
}
paddle_optimizer* paddle_create_SGD_optimizer(double learning_rate) {
SGD_optimizer* o = (SGD_optimizer*)malloc(sizeof(SGD_optimizer));
o->learning_rate = learning_rate;
paddle_optimizer* container = (paddle_optimizer*)malloc(sizeof(paddle_optimizer));
container->func = paddle_SGD_update_parameter;
container->update = update_SGD;
container->release = release_SGD;
container->optimizer = o;
return container;
}
package pserver
import "testing"
func TestSGDCreateRelease(t *testing.T) {
o := newOptimizer(sgd, 1)
o.Cleanup()
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册