RでMXNet(5)

訓練後のモデルの保存(手動)

mx.model.save(model, "mymodel", 5)

最後の数字は訓練の回数を表す。
同じモデルでも数字を変えればパラメータを別々に保存できる。
たとえば10エポック訓練した後のパラメータ、20エポック訓練した後のパラメータなどなど。
呼び出しは、

model_1 <- mx.model.load("mymodel", 5)

呼び出したモデルで再度訓練を続ける場合にはsymbolとarg.paramsを指定すると良い。

model <- mx.model.FeedForward.create(
	##ここ
	symbol=model_1$symbol,
	##
	X = x_train,
	y = t_train,
	ctx = mx.cpu(),
	num.round = 15,
	array.batch.size = 100,
	learning.rate = 0.1, momentum = 0,
	eval.metric = mx.metric.accuracy,
	eval.data = list(data = x_test, label = t_test),
	##ここ
	arg.params = model_1$arg.params,
	##    
	array.layout = "rowmajor")

厳密にはaux.paramsというのもあるが最初のモデル作成時に指定していなければNULLのまま。

訓練後のモデルの保存(自動)

epoch.end.callbackを指定すれば良い。

model <- mx.model.FeedForward.create(
	softmax, X = x_train,
	y = t_train,
	ctx = mx.cpu(),
	num.round = 15,
	array.batch.size = 100,
	learning.rate = 0.1, momentum = 0,
	eval.metric = mx.metric.accuracy,
	eval.data = list(data = x_test, label = t_test),
	arg.params = new_params,
	##ここ
	epoch.end.callback = mx.callback.save.checkpoint("mymodel",period=5),
	##
	array.layout = "rowmajor")

periodで指定したエポック毎に保存してくれる。

補足

パレメータのみを保存する場合には、

mx.nd.save(model$arg.params, "myparams")

呼び出しは、

newlist <- mx.nd.load("myparams")