2016-01-07 23 views
5

Tôi đang cố gắng thực hiện phân loại LSTM nhị phân bằng cách sử dụng theano. Tôi đã đi qua mã ví dụ tuy nhiên tôi muốn xây dựng của riêng tôi.Xây dựng Bài phát biểu Tập dữ liệu để phân loại nhị phân LSTM

Tôi có một nhóm nhỏ các bản ghi "Hello" & "Tạm biệt" mà tôi đang sử dụng. Tôi tiền xử lý chúng bằng cách trích xuất các tính năng MFCC cho chúng và lưu các tính năng này trong một tệp văn bản. Tôi có 20 bài phát biểu (10 bài) và tôi đang tạo một tệp văn bản cho mỗi từ, vì vậy 20 tệp văn bản có chứa các tính năng MFCC. Mỗi tệp là ma trận 13x56.

Vấn đề của tôi bây giờ là: Làm cách nào để sử dụng tệp văn bản này để đào tạo LSTM?

Tôi tương đối mới với điều này. Tôi đã trải qua một số tài liệu về nó cũng như nhưng không tìm thấy sự hiểu biết thực sự tốt về khái niệm này.

Bất kỳ cách nào đơn giản hơn bằng cách sử dụng LSTM cũng sẽ được hoan nghênh.

Trả lời

6

Có nhiều triển khai hiện tại, ví dụ: Tensorflow Implementation, Kaldi-focused implementation with all the scripts, tốt hơn hết là kiểm tra chúng trước.

Theano quá thấp, bạn có thể thử với keras thay vào đó, như được mô tả trong tutorial. Bạn có thể chạy hướng dẫn "như là" để hiểu mọi thứ diễn ra như thế nào.

Sau đó, bạn cần chuẩn bị tập dữ liệu. Bạn cần phải chuyển dữ liệu của bạn thành chuỗi các khung dữ liệu và cho mỗi khung dữ liệu theo thứ tự bạn cần gán nhãn đầu ra.

Máy ảnh hỗ trợ hai loại RNN - các lớp trả về chuỗi và các lớp trả về các giá trị đơn giản. Bạn có thể thử nghiệm với cả hai, trong mã bạn chỉ cần sử dụng return_sequences=True hoặc return_sequences=False

Đào tạo với chuỗi bạn có thể gán nhãn giả cho tất cả các khung ngoại trừ cuối cùng một trong những nơi bạn có thể gán nhãn của từ mà bạn muốn nhận. Bạn cần đặt nhãn đầu vào và đầu ra cho mảng. Vì vậy, nó sẽ là:

X = [[word1frame1, word1frame2, ..., word1framen],[word2frame1, word2frame2,...word2framen]] 

Y = [[0,0,...,1], [0,0,....,2]] 

Trong X mọi phần tử là vectơ 13 nổi. Trong Y, mọi phần tử chỉ là một số - 0 cho các khung trung gian và ID từ cho khung cuối cùng.

Để đào tạo chỉ với các nhãn bạn cần đặt nhãn đầu vào và đầu ra cho mảng và mảng đầu ra đơn giản hơn. Vì vậy, dữ liệu sẽ là:

X = [[word1frame1, word1frame2, ..., word1framen],[word2frame1, word2frame2,...word2framen]] 

Y = [[0,0,1], [0,1,0]] 

Lưu ý rằng đầu ra được vectorized (np_utils.to_categorical) để biến nó thành vectơ thay vì chỉ số.

Sau đó, bạn tạo kiến ​​trúc mạng. Bạn có thể có 13 nổi cho đầu vào, một vectơ cho đầu ra. Ở giữa bạn có thể có một lớp được kết nối đầy đủ, sau đó là một lớp lstm. Không sử dụng các lớp quá lớn, bắt đầu với những lớp nhỏ.

Sau đó, bạn cho bộ dữ liệu này vào model.fit và nó đào tạo cho bạn mô hình. Bạn có thể ước tính chất lượng mô hình trên tập hợp được tổ chức sau khi đào tạo.

Bạn sẽ gặp vấn đề với hội tụ vì bạn chỉ có 20 ví dụ. Bạn cần nhiều ví dụ hơn, tốt nhất là hàng ngàn người để đào tạo LSTM, bạn sẽ chỉ có thể sử dụng các mô hình rất nhỏ.

+0

Xin cảm ơn bạn đã hướng dẫn. Bạn có biết bất kỳ tập dữ liệu nào có 100 lời chào và lời tạm biệt được ghi lại không? –

+1

Bạn có thể tải xuống cơ sở dữ liệu các chữ số bị cô lập tại đây: http://www.ece.ucsb.edu/Faculty/Rabiner/ece259/speech%20recognition%20course.html, có khoảng 200 mẫu cho mỗi chữ số –

+0

Vì vậy, nếu tôi sẽ áp dụng phương pháp này cho các số (không phải nhị phân), chúng ta có thể gọi nó là nhận dạng giọng nói không? – udani

Các vấn đề liên quan