質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

2回答

238閲覧

tensorflow.jsで学習(訓練)中、ブラウザが固まる

webgoto

総合スコア1293

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

1クリップ

投稿2018/07/13 02:10

下記のコードを実行しています。
学習の内容は適当に他のサイトを参考にしたもので、結果はどうなってもよいのですが、
ブラウザで訓練(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>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

https://memo.sugyan.com/entry/2019/08/01/131052
TensorFlow.jsがChromeでWebWorker上でもWebGL backendで動く

投稿2020/07/05 13:48

webgoto

総合スコア1293

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

非同期通信は

@IT > HTML5 + UX > リッチクライアント用語辞典 > 非同期通信

ネットワークなどでつながれているコンピュータ間で、送信者のデータ送信タイミングと受信者のデータ受信タイミングを合わせずに通信を行う通信方式

なだけで、tensorflow.jsはブラウザ上で処理を行うので、重い処理をすればブラウザが固まるのは当然かと。

投稿2020/07/05 07:14

aokikenichi

総合スコア2218

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aokikenichi

2020/07/06 00:03

見当違いの回答をしてしまい大変申し訳ありませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問