如何使用2d内核执行1d卷积

时间:2017-03-07 03:39:33

标签: python keras conv-neural-network

我目前正尝试使用2d内核对图像执行1d卷积。应该在图像的X轴上执行1d卷积,图像是音频文件的光谱。其中进行卷积的图像被划分为13个部分,每个部分以中心频率为中心,其中13个不同的CNN网络将执行1d卷积以提取总共(x,13)个特征点,并且单独地(x, 1)特征点。 x由data_output_train

的长度给出

内核大小定义为中心元素将是中心频率。

这是当前存储数据的方式:

def model(feature,train_input_data,
        train_output_data,
        test_input_data,
        test_output_data):

        #Feature number 0-12
        number_of_filters = 1
        #Debug stuff!
        print feature
        print center_freq[feature]
        print center_freq[feature]*2
        print int(center_freq[feature]*2)
        print frequency_to_pixel_row(int(center_freq[feature]*2))

        col = int(frequency_to_pixel_row(int(center_freq[feature]*2)))
        #init Data containers
        data_train_input = []
        data_test_input = []
        data_train_output = []
        data_test_output = []
        print "jghkjhk"

        #Extract the desired section
        for images in train_input_data:
            if feature == 0:
                #print images.shape[0]
                data_train_input = images[images.shape[0] - int(center_freq[feature]*2):images.shape[0],:]
                #print data.shape
        #Vstack so it can be used in keras
        data_train_input_vstack = np.vstack(data_train_input)

        #Extract the desired section
        for images in test_input_data:
            if feature == 0:
                #print images.shape[0]
                data_test_input = images[images.shape[0] - int(center_freq[feature]*2):images.shape[0],:]
                #print data.shape
        data_test_input_vstack = np.vstack(data_test_input)

        #Extract the desired output data
        for rows in train_output_data:
            #print rows.shape
            data_train_output = rows[:,feature]
        data_train_output_vstack = np.vstack(data_train_output)

        #Extract the desired output data
        for rows in test_output_data:
            #print rows.shape
            data_test_output = rows[:,feature]
        data_test_output_vstack = np.vstack(data_test_output)

现在我需要定义网络结构以便它执行1d卷积。但是我如何确保它也这样做?并执行我想要它的方式..我想我必须使用convolution2d,但我如何修复它只执行1d convoulution?

0 个答案:

没有答案