Windows 10 on macOS Parallels Desktop + C# 9.0 + Keras.NET + Visual Studio 2019で、
あるスポーツ競技の結果予測を行うディープラーニングを行っています。
fit
を行う時に、損失率や正答率がこのように出てきます。途中まで載せます。
2021-06-02 19:04:06.077316: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found 2021-06-02 19:04:06.083405: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine. 2021-06-02 19:04:24.327254: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'nvcuda.dll'; dlerror: nvcuda.dll not found 2021-06-02 19:04:24.332435: W tensorflow/stream_executor/cuda/cuda_driver.cc:326] failed call to cuInit: UNKNOWN ERROR (303) 2021-06-02 19:04:24.336976: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:169] retrieving CUDA diagnostic information for host: DESKTOP-TRDQSA8 2021-06-02 19:04:24.341720: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:176] hostname: DESKTOP-TRDQSA8 2021-06-02 19:04:24.347900: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX AVX2 To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags. 2021-06-02 19:04:24.515449: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:176] None of the MLIR Optimization Passes are enabled (registered 2) Epoch 1/200 19168/19168 [==============================] - 17s 823us/step - loss: 0.7032 - accuracy: 0.0865 Epoch 2/200 19168/19168 [==============================] - 16s 838us/step - loss: 0.6794 - accuracy: 0.0872 Epoch 3/200 19168/19168 [==============================] - 16s 824us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 4/200 19168/19168 [==============================] - 16s 843us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 5/200 19168/19168 [==============================] - 16s 853us/step - loss: 0.6794 - accuracy: 0.0872 Epoch 6/200 19168/19168 [==============================] - 16s 851us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 7/200 19168/19168 [==============================] - 15s 809us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 8/200 19168/19168 [==============================] - 17s 908us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 9/200 19168/19168 [==============================] - 19s 981us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 10/200 19168/19168 [==============================] - 18s 915us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 11/200 19168/19168 [==============================] - 17s 882us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 12/200 (中略 lossもaccuracyも全て同じ数字です) Epoch 60/200 19168/19168 [==============================] - 16s 850us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 61/200 19168/19168 [==============================] - 15s 777us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 62/200 19168/19168 [==============================] - 14s 743us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 63/200 19168/19168 [==============================] - 14s 742us/step - loss: 0.6793 - accuracy: 0.0872 Epoch 64/200 19168/19168 [==============================] - 14s 750us/step - loss: 0.6793 - accuracy: 0.0872 (後略)
損失率が0.6793
という数字で収束しているように見えます。
他のサイトを見ていると、0.00...
といった数字だったり、0.1...
という数字だったり、少なくとももっと低い数字になっています。
そもそも今回題材にしているスポーツ競技の結果は常に不安定で、データと結果が必ずしも比例するわけではありません。
強い選手がビリになったり、実績のない選手が勝利したりすることも、わりと頻繁にあります。
このような事情があっても、損失率として0.6
台は適切なのでしょうか?高すぎないでしょうか?
見直すべきであれば、見直すポイントはありませんか?
以下、C#のコード内の設定です。
データの行数は約4万8000(1年分)です。
cs
1var model = new Sequential(); 2 3model.Add(new Dense(300, activation: "relu", input_shape: new Shape(90); 4model.Add(new Dropout(0.2); 5model.Add(new Dense(128, activation: "relu"); 6model.Add(new Dropout(0.2)); 7model.Add(new Dense(128, activation: "relu"); 8model.Add(new Dropout(0.2)); 9model.Add(new Dense(1, activation: "sigmoid"); 10 11model.Compile(optimizer: "adam", loss: "binary_crossentropy", metrics: new string[] { "accuracy" }); 12 13model.Fit(x, y, batch_size: 2, 14 initial_epoch: this.epochs, epochs: this.epochs + 200, verbose: 1);
さらに情報が必要であれば教えて下さい。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/03 08:56
2021/06/03 13:45
2021/06/23 13:07