下記のコードを実行しています。
学習の内容は適当に他のサイトを参考にしたもので、結果はどうなってもよいのですが、
ブラウザで訓練(model.fit)が完了するまでに30秒ほどかかるものです。
model.fitを行なうと演算のためブラウザがロックされ、操作できなくなってしまいます。
tensorflow.jsのfitは非同期関数で別プロセスで実行されて、バックグラウンドで訓練できるため
ブラウザは固まらないものと思っていましたが、考え違いをしていますでしょうか。
ブラウザがロックされない設定があればお教え下さい。
よろしくお願い致します。
html
1<!doctype html> 2<html lang="ja"> 3<head> 4<meta charset="UTF-8"> 5<script src="tf.min.js"></script> 6</head> 7<body> 8<script> 9 10var model = tf.sequential(); 11model.add(tf.layers.conv1d({filters: 64, kernelSize: 8, padding: 'same', inputShape: [64, 1], activation: 'relu'})); 12model.add(tf.layers.maxPooling1d({poolSize: 2, padding: 'same'})); 13model.add(tf.layers.conv1d({filters: 64, kernelSize: 8, padding: 'same', activation: 'relu'})); 14model.add(tf.layers.maxPooling1d({poolSize: 2, padding: 'same'})); 15model.add(tf.layers.conv1d({filters: 32, kernelSize: 8, padding: 'same', activation: 'relu'})); 16model.add(tf.layers.conv1d({filters: 1, kernelSize: 8, padding: 'same', activation: 'tanh'})); 17model.compile({optimizer: 'adam', loss: 'meanSquaredError'}); 18 19var raw_data = []; 20for(var i = 0; i < 10000; i++) { 21 raw_data.push((Math.sin(i) + Math.sin(3 * i) + Math.sin(10 * i) + Math.cos(5 * i) + Math.cos(7 * i)) / 5); 22} 23 24var xs = []; 25var ys = []; 26 27for(var j = 0; j < 9900; j++){ 28 xs.push(raw_data.slice(j, j+64)); 29 ys.push(raw_data.slice(j+64, j+80)); 30} 31 32var train_X = tf.tensor2d(xs, [9900, 64]).reshape([9900, 64, 1]); 33var train_Y = tf.tensor2d(ys, [9900, 16]).reshape([9900, 16, 1]); 34 35async function train(){ 36 await model.fit(train_X, train_Y, {epochs: 10, validationSplit: 0.1}); 37 model.predict(tf.tensor3d(raw_data.slice(9600, 9664), [1, 64, 1])).print(); 38} 39 40train(); 41</script> 42</body> 43</html>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。