.. raw:: html
.. code:: python
loss = gluon.loss.SoftmaxCrossEntropyLoss()
.. raw:: html
.. raw:: html
.. code:: python
loss = nn.CrossEntropyLoss(reduction='none')
.. raw:: html
.. raw:: html
.. code:: python
loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
.. raw:: html
.. raw:: html
Thuật toán tối ưu hóa
---------------------
Ở đây, chúng ta sử dụng minibatch stochastic gradient descent với tốc độ
học tập là 0.1 làm thuật toán tối ưu hóa. Lưu ý rằng điều này giống như
chúng ta đã áp dụng trong ví dụ hồi quy tuyến tính và nó minh họa khả
năng ứng dụng chung của các trình tối ưu hóa.
.. raw:: html
.. raw:: html
.. code:: python
trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': 0.1})
.. raw:: html
.. raw:: html
.. code:: python
trainer = torch.optim.SGD(net.parameters(), lr=0.1)
.. raw:: html
.. raw:: html
.. code:: python
trainer = tf.keras.optimizers.SGD(learning_rate=.1)
.. raw:: html
.. raw:: html
Đào tạo
-------
Tiếp theo chúng ta [**gọi hàm đào tạo**] trong
:numref:`sec_softmax_scratch` để đào tạo mô hình.
.. raw:: html
.. raw:: html
.. code:: python
num_epochs = 10
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer)
.. figure:: output_softmax-regression-concise_75d138_51_0.svg
.. raw:: html
.. raw:: html
.. code:: python
num_epochs = 10
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer)
.. figure:: output_softmax-regression-concise_75d138_54_0.svg
.. raw:: html
.. raw:: html
.. code:: python
num_epochs = 10
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer)
.. figure:: output_softmax-regression-concise_75d138_57_0.svg
.. raw:: html
.. raw:: html
Như trước đây, thuật toán này hội tụ thành một giải pháp đạt được độ
chính xác khá, mặc dù lần này với ít dòng mã hơn trước.
Tóm tắt
-------
- Sử dụng API cấp cao, chúng ta có thể thực hiện hồi quy softmax chính
xác hơn nhiều.
- Từ góc độ tính toán, việc thực hiện hồi quy softmax có những phức
tạp. Lưu ý rằng trong nhiều trường hợp, một khuôn khổ học sâu thực
hiện các biện pháp phòng ngừa bổ sung ngoài các thủ thuật nổi tiếng
nhất này để đảm bảo sự ổn định về số, cứu chúng ta khỏi những cạm bẫy
hơn nữa mà chúng ta sẽ gặp phải nếu chúng ta cố gắng mã hóa tất cả
các mô hình của mình từ đầu trong thực tế.
Bài tập
-------
1. Hãy thử điều chỉnh các siêu tham số, chẳng hạn như kích thước lô, số
kỷ nguyên và tốc độ học tập, để xem kết quả là gì.
2. Tăng số lượng kỷ nguyên để đào tạo. Tại sao độ chính xác thử nghiệm
có thể giảm sau một thời gian? Làm thế nào chúng ta có thể sửa chữa
điều này?
.. raw:: html
.. raw:: html
`Discussions `__
.. raw:: html
.. raw:: html
`Discussions `__
.. raw:: html
.. raw:: html
`Discussions `__
.. raw:: html
.. raw:: html