質問編集履歴

1

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

2021/11/27 15:15

投稿

mmtaro000
mmtaro000

スコア15

test CHANGED
File without changes
test CHANGED
@@ -1 +1,103 @@
1
- Pythonのkerasで機械学習を行っているのですが、グリッドサーチでパラメータを調整しているため、3,4重for文を構成してしまっております。なので、タイトルにもあるエラーが発生してしまいます。しかしGridSearchCV使用すると各パラメータのスコアわからないという欠点があり使用できません。for文を介さずにパラメータサーチを行う方法があれば教えていただきたいです。
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
+ ```