質問編集履歴

1

使用しているソースの概要を追加しました。

2021/11/27 15:15

投稿

mmtaro000
mmtaro000

score0

test CHANGED
File without changes
test CHANGED
@@ -1,103 +1 @@
1
- Pythonのkerasで機械学習を行っているのですが、グリッドサーチでパラメータを調整しているため、重for文を構成してしまっております。なので、タイトルにもある警告文が発生してしまいます。調べたところfor内で学習させてしまっていとで発生すると合ったです、自分たいことの都合上forループを削除できません。for文を介さずにパラメータサーチを行う方法があれば教えていただきたいです。
2
-
3
-
4
-
5
- 現状のソースの概要は以下の通りとなっております。
6
-
7
-
8
-
9
- ```Python
10
-
11
- def NN(lr, epoch):
12
-
13
- #学習に使用するデータのループ
14
-
15
- for i in Sample:
16
-
17
- #以下学習モデルの構築及び学習・評価
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
- if __name__ == "__main__":
26
-
27
- #予め作成した学習率及びエポック数のリストから値を選択
28
-
29
- for lr in Param_lr:
30
-
31
- for epoch in Param_epoch:
32
-
33
- NN(lr, epoch)
34
-
35
- ```
36
-
37
-
38
-
39
- 上記のソースの通り、学習率及びエポック数に関してパラメータサーチを行い、更にNN()内で使用する学習データを決定するためのforループが存在します。パラメータサーチを行わない、Sampleのループを削除する以外での改善策を教えていただければ幸いです。
40
-
41
-
42
-
43
- また、以下のコードで実行した際は警告文が出ませんでした。これは一体どうしてなのでしょうか?
44
-
45
-
46
-
47
- ```Python
48
-
49
- import numpy as np
50
-
51
- import matplotlib.pyplot as plt
52
-
53
- from keras.models import Sequential
54
-
55
- from keras.layers import Dense
56
-
57
-
58
-
59
-
60
-
61
- x = np.linspace(-np.pi, np.pi).reshape(-1, 1)
62
-
63
- t = np.sin(x)
64
-
65
- def NN_test():
66
-
67
- for i in range(0, 5):
68
-
69
- # ニューラルネットワークの設定
70
-
71
- n_in = 1 # 入力層のニューロン数
72
-
73
- n_mid = 20 # 中間層のニューロン数
74
-
75
- n_out = 1 # 出力層のニューロン数
76
-
77
-
78
-
79
- batch_size = 8 # バッチサイズ
80
-
81
-
82
-
83
- # 入力層、中間層、出力層の3層のニューラルネットワークを構築
84
-
85
- model = Sequential()
86
-
87
- model.add(Dense(n_mid, input_shape=(n_in,), activation="sigmoid")) # 活性化関数にシグモイド関数
88
-
89
- model.add(Dense(n_out, activation="linear")) # 活性化関数に恒等関数
90
-
91
- model.compile(loss="mean_squared_error", optimizer="sgd") # 損失関数に二乗誤差、最適化アルゴリズムにSGDを使用してコンパイル
92
-
93
- history = model.fit(x, t, batch_size=batch_size, epochs=10, validation_split=0.1) # 10%のデータを検証用に使う
94
-
95
-
96
-
97
- if __name__ == "__main__":
98
-
99
- NN_test()
100
-
101
-
102
-
103
- ```
1
+ Pythonのkerasで機械学習を行っているのですが、グリッドサーチでパラメータを調整しているため、3,4重for文を構成してしまっております。なので、タイトルにもあるエラーが発生してしまいます。しかしGridSearchCV使用すると各パラメータでのスコアわからないという欠点り、使用できません。for文を介さずにパラメータサーチを行う方法があれば教えていただきたいです。