Dies ist Teil 2 des Lernmemos für "Deep-Learning von Grund auf neu".
train_neuralnet
#Daten lesen
(x_train, t_train), (x_test, t_test) = load_mnist(normalize=True,flatten=True, one_hot_label=True)
train_neuralnet
network = TwoLayerNet(input_size=784, hidden_size=50, output_size=10)
train_neuralnet
iters_num = 10000 #Stellen Sie die Anzahl der Wiederholungen entsprechend ein
train_size = x_train.shape[0] # 60000
batch_size = 100
learning_rate = 0.1
train_loss_list = []
train_acc_list = []
test_acc_list = []
#Iterative Verarbeitung pro Epoche 60000/ 100
iter_per_epoch = max(train_size / batch_size, 1)
train_neuralnet
for i in range(iters_num): #10000
#Holen Sie sich eine Mini-Charge
batch_mask = np.random.choice(train_size, batch_size) # (100,)Form von
x_batch = x_train[batch_mask] # (100,784)Form von
t_batch = t_train[batch_mask] # (100,784)Form von
#Gradientenberechnung
#grad = network.numerical_gradient(x_batch, t_batch)
grad = network.gradient(x_batch, t_batch)
#Parameteraktualisierung
for key in ('W1', 'b1', 'W2', 'b2'):
network.params[key] -= learning_rate * grad[key]
loss = network.loss(x_batch, t_batch)
train_loss_list.append(loss)
#Speichern Sie Daten, wenn die Bedingungen für 1 Epoche bei 600 erfüllt sind
if i % iter_per_epoch == 0:
train_acc = network.accuracy(x_train, t_train)
test_acc = network.accuracy(x_test, t_test)
train_acc_list.append(train_acc)
test_acc_list.append(test_acc)
print("train acc, test acc | " + str(train_acc) + ", " + str(test_acc))
python
#Zeichnen eines Diagramms
x = np.arange(len(train_acc_list))
plt.plot(x, train_acc_list,'o', label='train acc')
plt.plot(x, test_acc_list, label='test acc', linestyle='--')
plt.xlabel("epochs")
plt.ylabel("accuracy")
plt.ylim(0, 1.0)
plt.legend(loc='lower right')
plt.show()
Deep Learning von Grund auf neu
Recommended Posts