convnetjsを使って、x,y
座標内の数字の行からNode.jsを学習させようとします。目標は、単純な行の次の値を予測することです。Node.jsとconvnetjsを使って数値の行から深く学び、新しい値を予測する方法?
まず第1に、非常に単純な行[0,1,0,2,0,3,0,4,0,5,0,6]
はおそらく後でsin
とcos
行です。
私は深い学習教材に深く関わりたくないので、私はconvnetjsを使用しています。
は、これまで私が試した:
var convnetjs = require("./convnet-min.js");
// create a net out of it
var net = new convnetjs.Net();
var layer_defs = [];
layer_defs.push({type:'input', out_sx:1, out_sy:1, out_depth:1});
layer_defs.push({type:'fc', num_neurons:5, activation:'sigmoid'});
layer_defs.push({type:'regression', num_neurons:1});
var net = new convnetjs.Net();
net.makeLayers(layer_defs);
var my_data = [
0,1,2,3,4,5,6,7,8,9,10,
0,1,2,3,4,5,6,7,8,9,10,
0,1,2,3,4,5,6,7,8,9,10,
0,1,2,3,4,5,6,7,8,9,10,
0,1,2,3,4,5,6,7,8,9,10,
0,1,2,3,4,5,6,7,8,9,10,
0,1,2,3,4,5,6,7,8,9,10,
0,1,2,3,4,5,6,7,8
];
var x = new convnetjs.Vol(my_data);
var trainer = new convnetjs.SGDTrainer(net, {learning_rate:1.1, momentum:0.0, batch_size:1, l2_decay:0.001});
var think = function() {
for (var i = 0; i < my_data.length; i++) {
x.w[i] = my_data[i]; // Vol.w is just a list, it holds your data
trainer.train(x, my_data[i]);
}
}
for (var i = 0; i < 100; i++) {
think();
var predicted_values = net.forward(x);
console.log('predicted value: ' + predicted_values.w[0]);
}
を私は次の値を予測したいが、私は彼がしたトレーナーに悪いを見分ける方法([9]次の値を知って)不思議な学習を実現するために、良いですまたは非常に良い仕事ですか?
これを正しい方法で訓練するには、値を予測するためにさらにx
を訓練してください。予測値が値9
^^の方向に向かないので、これはそれほど簡単ではないと思います。
これはすでにそう.train機能に含まれるべきで検索ネットは値をネットに書き換えてから、その差分エラーを後退させることで学習します。しかし、私はあなたのデータの例が本当にうってつけだとは思わない。正規分布に従ったセットを生成しようとすると、これは主に実際の問題と、それらのツールが開発され、最適化されたものであります。 – Walfrat
あなたの入力データはどのように指定されていますか、そして出力は何でしょうか?あなたの質問にあるステートメントと 'my_data'のフォーマットとの関係はわかりません – leobelizquierdo
My_dataは0から10までの数字の行で、0から何度も何度でも再スタートします。期待している次の値は9です。 –