5

Tôi đang cố tạo một CNN để phân loại dữ liệu. Dữ liệu của tôi là X [N_data, N_features] Tôi muốn tạo một mạng neural có khả năng phân loại nó. Vấn đề của tôi là liên quan đến hình dạng đầu vào của một Conv1D cho kết thúc keras.Mạng nơ-ron liên kết Hình dạng đầu vào Conv1d

Tôi muốn lặp lại bộ lọc hơn .. hãy nói 10 tính năng và sau đó giữ cùng trọng số cho mười tính năng tiếp theo. Đối với mỗi dữ liệu, lớp liên kết của tôi sẽ tạo ra N_features/10 Não mới. Tôi có thể làm như thế nào? Tôi nên đưa gì vào input_shape?

def cnn_model(): 
model = Sequential()            
model.add(Conv1D(filters=1, kernel_size=10 ,strides=10,  
        input_shape=(1, 1,N_features),kernel_initializer= 'uniform',  
        activation= 'relu')) 
model.flatten() 
model.add(Dense(N_features/10, init= 'uniform' , activation= 'relu')) 

Bạn có lời khuyên nào? cảm ơn bạn!

Trả lời

2

@ câu trả lời Marcin của có thể làm việc, nhưng đề nghị có thể đưa tài liệu ở đây:

Khi sử dụng lớp này là lớp đầu tiên trong một mô hình, cung cấp một cuộc tranh cãi input_shape (tuple của số nguyên hoặc Không, ví dụ: (. 10, 128) cho chuỗi 10 vectơ 128 chiều vectơ, hoặc (Không, 128) cho chuỗi biến dài của vectơ 128 chiều

sẽ là:

model = Sequential() 
model.add(Conv1D(filters=1, kernel_size=10 ,strides=10,  
        input_shape=(None, N_features),kernel_initializer= 'uniform',  
        activation= 'relu')) 

Lưu ý rằng vì dữ liệu đầu vào (N_Data, N_features), chúng tôi đặt số ví dụ là không xác định (Không có). Đối số strides kiểm soát kích thước của dấu thời gian trong trường hợp này.

6

Hãy thử:

def cnn_model(): 
    model = Sequential()            
    model.add(Conv1D(filters=1, kernel_size=10 ,strides=10,  
       input_shape=(N_features, 1),kernel_initializer= 'uniform',  
       activation= 'relu')) 
model.flatten() 
model.add(Dense(N_features/10, init= 'uniform' , activation= 'relu')) 
.... 

Và reshape bạn x hình (nb_of_examples, nb_of_features, 1).

EDIT:

Conv1D được thiết kế cho một phân tích chuỗi - để có bộ lọc xoắn đó sẽ là như nhau bất kể trong đó một phần của chuỗi chúng ta. Thứ nguyên thứ hai được gọi là tính năng kích thước nơi bạn có thể có vectơ của nhiều tính năng ở từng thời điểm. Người ta có thể suy nghĩ về chuỗi chiều giống như không gian kích thước và tính năng chiều giống như kênh chiều hoặc màu chiều trong Conv2D. Như @putonspectacles được đề cập trong nhận xét của anh ấy - bạn có thể đặt chuỗi kích thước thành None để làm cho mạng của bạn độ dài đầu vào bất biến.

+0

tại sao 'input_shape = (1, N_features, 1)' thay vì 'input_shape = (, N_features)'? – putonspectacles

+0

Tôi đã sửa câu trả lời của mình :) –

+0

vẫn còn, tại sao input_shape có thứ nguyên thứ ba? Tôi chỉ tò mò/cố hiểu. – putonspectacles

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