Cet article est une sortie facile à comprendre du ** Deep Learning from scratch Chapter 7 Learning Techniques **. J'ai pu le comprendre moi-même, j'espère donc que vous pourrez le lire confortablement. De plus, je serais plus qu'heureux si vous pouviez vous y référer lors de l'étude de ce livre.
Les hyper paramètres sont des paramètres qui doivent être définis par la puissance humaine, ce qui est requis lors de la création d'un réseau neuronal. Par exemple, le nombre de couches et le nombre de neurones.
Cet hyper paramètre a une grande influence sur les performances du réseau de neurones, donc je veux vraiment l'optimiser, mais c'est très difficile quand il s'agit de puissance humaine. Par conséquent, je vais laisser cela à la machine, donc je vais essayer de l'implémenter pour trouver automatiquement la valeur optimale de l'hyper paramètre.
Pour faire simple, nous utilisons des valeurs aléatoires comme hyperparamètres pour mesurer les résultats d'apprentissage et affiner la plage de valeurs optimale à partir des résultats.
#Réglage des hyper paramètres
from sklearn.model_selection import train_test_split
def hayper_tyning(lr_m, lr_d, wd_m, wd_d, x_train, t_train, sanpule = 2):
lr_list = []
wd_list = []
x_train = x_train[:500]
t_train = t_train[:500]#Parce que ça prend beaucoup de temps
(train_x, hayper_x, train_t, hayper_t) = train_test_split(x_train, t_train, test_size=0.2, random_state=0)
for i in range(sanpule):
train_acc_list = []
test_acc_list = []
lr = 10 ** np.random.uniform(lr_d, lr_m)
weight_decay_lambda = 10 ** np.random.uniform(wd_d, wd_m)
lr_list.append(lr)
wd_list.append(weight_decay_lambda)
network = MutiLayerNet(input_size = 784, hiden_size_list = [50], output_size = 10, weight_decay_lambda = weight_decay_lambda)
for i in range(1, 101):
grads = network.gradient(train_x, train_t)
for p in ['W1','b1','W2','b2']:
network.params[p] = network.params[p] - (lr * grads[p])
if i % 100 == 0:
train_acc = network.accuracy(train_x, train_t)
test_acc = network.accuracy(hayper_x, hayper_t)
train_acc_list.append(train_acc)
test_acc_list.append(test_acc)
#Le reste est un graphique ou une réduction
Recommended Posts