我目前正尝试使用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?