Làm thế nào để tham số verify_split của chức năng phù hợp của Keras hoạt động?


17

Phân chia xác thực trong chức năng phù hợp với mô hình tuần tự Keras được ghi lại như sau trên https://keras.io/models/fterential/ :

verify_split: Float giữa 0 và 1. Phân số dữ liệu đào tạo được sử dụng làm dữ liệu xác nhận. Mô hình sẽ phân tách phần dữ liệu đào tạo này, sẽ không đào tạo về nó và sẽ đánh giá sự mất mát và bất kỳ số liệu mô hình nào trên dữ liệu này vào cuối mỗi kỷ nguyên. Dữ liệu xác nhận được chọn từ các mẫu cuối cùng trong dữ liệu x và y được cung cấp trước khi xáo trộn.

Xin lưu ý dòng cuối cùng:

Dữ liệu xác nhận được chọn từ các mẫu cuối cùng trong dữ liệu x và y được cung cấp trước khi xáo trộn.

Có nghĩa là dữ liệu xác nhận luôn được cố định và lấy từ dưới cùng của tập dữ liệu chính?

Có cách nào có thể được thực hiện để chọn ngẫu nhiên một phần dữ liệu nhất định từ bộ dữ liệu chính không?

Câu trả lời:


17

Bạn thực sự sẽ không muốn lấy mẫu lại bộ xác thực của mình sau mỗi kỷ nguyên. Nếu bạn đã làm điều này, mô hình của bạn sẽ được đào tạo trên từng mẫu trong tập dữ liệu của bạn và do đó điều này sẽ gây ra tình trạng thừa. Bạn muốn luôn luôn phân chia dữ liệu của mình trước quá trình đào tạo và sau đó thuật toán chỉ nên được đào tạo bằng cách sử dụng tập hợp con của dữ liệu để đào tạo.

Hàm được thiết kế đảm bảo dữ liệu được phân tách theo cách mà nó luôn luôn đào tạo trên cùng một phần dữ liệu cho mỗi kỷ nguyên. Tất cả xáo trộn được thực hiện trong mẫu đào tạo giữa các kỷ nguyên nếu tùy chọn đó được chọn.

Tuy nhiên, đối với một số bộ dữ liệu nhận được một vài trường hợp cuối cùng là không hữu ích, đặc biệt nếu bộ dữ liệu được tập hợp lại dựa trên lớp. Sau đó, việc phân phối các lớp học của bạn sẽ bị sai lệch. Do đó, bạn sẽ cần một số cách ngẫu nhiên để trích xuất một tập hợp con dữ liệu để có được các phân phối lớp cân bằng trong tập huấn luyện và xác nhận hợp lệ. Đối với điều này, tôi luôn thích sử dụng chức năng sklearn như sau

from sklearn.model_selection import train_test_split

# Split the data
x_train, x_valid, y_train, y_valid = train_test_split(data, labels, test_size=0.33, shuffle= True)

Đây là một chức năng dễ sử dụng dễ dàng thực hiện những gì bạn muốn. Các biến datalabelslà ma trận numpy tiêu chuẩn với thứ nguyên đầu tiên là các thể hiện.


1
Tôi không có nghĩa là nhận được thử nghiệm khác nhau sau mỗi kỷ nguyên. Tôi đã hỏi về việc lấy dữ liệu từ cuối tập dữ liệu vì nhiều tập dữ liệu có thể được sắp xếp theo lớp (như bạn đã đề cập). Tôi biết train_test_splitvà bây giờ bạn xác nhận rằng đây là một phương pháp tốt hơn vì nó sẽ lấy ngẫu nhiên dữ liệu kiểm tra / xác thực từ bộ dữ liệu.
rnso

@rnso, thật không may, Keras không cung cấp tùy chọn đó. Tôi đoán nó không thực sự nằm trong phạm vi của những gì họ muốn cung cấp. Sẽ làm cho việc triển khai hơi khó hiểu khi có 2 đầu vào phương thức khác nhau với tên ngẫu nhiên.
JahKnows

Bạn đã không trộn lẫn định nghĩa về xác thực và dữ liệu thử nghiệm bằng cách sử dụng train_test_spli đó phải không?
bagustris

Nếu bạn sử dụng shuffletham số, bạn cũng sẽ sử dụng shuffletrong .fitmô hình cho máy ảnh chứ?
Shamoon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.