Python Keras卷积网络分类是否可能添加1D额外特征?

Python Keras卷积网络分类是否可能添加1D额外特征?,python,tensorflow,deep-learning,keras,convolutional-neural-network,Python,Tensorflow,Deep Learning,Keras,Convolutional Neural Network,我用Keras建立了一个成功的卷积网络,从EEG中对某些大脑活动进行分类。然而,我想通过增加一个额外的功能来改进它,我们知道它可以预测大脑活动;年龄,当然是一个不同比例的一维数组。我该怎么办 我可以将年龄作为额外维度添加到“图像”中吗?或者我应该用年龄把大脑活动分为不同的模型,然后合并这两个模型?还是有其他选择 谢谢你给我的建议和想法 最好的 汉内克不相关:为什么额外的昏暗?你在用Conv2D吗?使用Conv1D和(考试、时间步、频道),您可能会获得更好的结果 另外:您是否确保使用的是数据\u

我用Keras建立了一个成功的卷积网络,从EEG中对某些大脑活动进行分类。然而,我想通过增加一个额外的功能来改进它,我们知道它可以预测大脑活动;年龄,当然是一个不同比例的一维数组。我该怎么办

我可以将年龄作为额外维度添加到“图像”中吗?或者我应该用年龄把大脑活动分为不同的模型,然后合并这两个模型?还是有其他选择

谢谢你给我的建议和想法

最好的


汉内克

不相关:为什么额外的昏暗?你在用Conv2D吗?使用Conv1D和
(考试、时间步、频道)
,您可能会获得更好的结果

另外:您是否确保使用的是
数据\u格式class='channels\u first'
?Keras的默认值是
data\u format='channels\u last'


对Conv2D的回答:

#this is using channels_last, which is keras' default   
#if your data is channels_first, then just invert the shapes below

X = should be something like (745, 60, 13)

x_with_age = np.empty((745,60,14)) 
age = age.reshape((745,1,1))

x_with_age[:,:,:13] = X
x_with_age[:,:,-1:] = age
您必须选择一种交互两组数据的形式。这种互动可以是非常有创意的,没有规则。两种可能性:

  • 在某个地方乘以这个1D值,或者相加,或者考虑一些好的操作(需要有两个输入的函数API模型)
  • 将年龄作为附加通道添加到每个步骤(我喜欢这一步)
将年龄添加为附加频道:

x_with_age = np.empty((745,14,60,1)) 
age = age.reshape((745,1,1,1))

x_with_age[:,:13] = X
x_with_age[:,-1:] = age
使用带有年龄的
x\u作为输入来训练模型


如果遵循Conv1D建议:

#this is using channels_last, which is keras' default   
#if your data is channels_first, then just invert the shapes below

X = should be something like (745, 60, 13)

x_with_age = np.empty((745,60,14)) 
age = age.reshape((745,1,1))

x_with_age[:,:,:13] = X
x_with_age[:,:,-1:] = age

年龄不只是另一个输入吗?我只是不知道如何将它“放入”KerasAPI卷积网络中,比如:def conv5(self,units=512):inp=input(shape=self.shape[1:],name='inp')x=Conv2D(units,kernel_size=(1,1),strips=(1,1),activation='relu',data_format='channels\u last',name='conv1')(inp)等等等等等等。每个脑电图数据是一个时间线还是一张图片?谢谢你和我一起思考!我有745个试验,每个试验由13个通道(线)和60个频率点组成,矩阵中的值代表功率谱。因此,这是一个有60个步骤和13个通道的时间表?非常感谢!我认为矩阵是745张图片,13个(EEG通道而不是RGB通道(抱歉混淆))乘以60个(频点)像素!现在我有了一个带有np的3d矩阵。展开_dims(X,axis=-1)和“channels_last”。顺便说一下,验证准确率平均为85-93%。(分类交叉熵)验证损失约为.25%。我选择“分类”是因为我想知道模型有多确定。那么我还需要先使用频道吗?那么,随着年龄的增长,额外的频道是否仍然有效?我认为在第三轴上,我构建矩阵的方式会更有意义?第一个或最后一个通道是一个不会改变结果的选项。这与您的偏好和数据的组织方式有关。如果更改此选项,请确保同时排列或交换数据轴。我问你是因为我对你的4D数据感到困惑所以。。。你把“脑电图通道”转换成“keras像素”,只保留“一个keras通道”。是吗?是的。现在,我在第三轴上添加了一个带有年龄的额外频道。非常感谢Daniel,它似乎工作得很好,提高了准确性!该模型仍然有点过拟合,但我现在将开始调整超参数和正则化/退出。祝你下午愉快!