在模型中添加conv1d层会给我尺寸错误

时间:2018-11-02 21:10:28

标签: keras deep-learning

我是python和深度学习的新手。我正在尝试创建一个Keras顺序模型,其中我为长度20个碱基的RNA序列添加了卷积1d层,使用Keras hashing_trick函数将其硬编码为数字。我的输入是在pandas数据框中,如下所示:

 b1  b2  b3  b4  b5  b6  b7  b8  b9  b10  b11  b12  b13  b14  b15  b16  \

0 2 2 4 2 3 2 4 2 2 3 2 4 2 4 2 2
1 2 3 3 3 4 4 4 4 3 3 2 3 2 2 2 2
2 2 2 3 3 3 2 2 4 4 4 3 3 3 3 2 2
3 2 4 2 2 2 2 3 3 2 2 2 3 2 2 2 2
4 3 4 4 3 2 2 3 2 4 2 2 2 2 2 2 4
5 2 3 2 2 2 3 2 2 2 3 4 2 2 2 2 4
6 2 4 2 4 4 2 2 2 2 2 2 2 2 2 3 2
7 2 4 3 3 3 4 2 2 4 4 4 4 3 2 3 3
8 2 3 2 2 2 2 4 4 2 2 4 2 2 2 2 2 4
9 3 2 2 2 2 2 4 2 3 2 2 2 2 4 2 4 2
10 2 2 4 2 2 2 2 2 2 2 2 2 3 4 2 2
11 2 2 3 2 2 2 3 4 4 2 2 4 2 2 2 4

现在我的数据框形状为(500行,20列),标签为(500行,1列)

因此,当我添加conv1D层并将过滤器指定为32,内核大小指定为5时,我做对了吗?因为我遇到错误

ValueError:输入0与层conv1d_29不兼容:预期ndim = 3,找到ndim = 2

由于我首先没有使用conv1d层,所以我没有指定形状

我在做什么错

请在下面找到代码段

data = pd.read_csv("Sequence_file.csv")
test = pd.read_csv("test_file.csv")
tdf = test[['b1','b2','b3','b4','b5','b6','b7','b8','b9','b10','b11','b12','b13','b14','b15','b16','b17','b18','b19','b20']]
df1 = data[['b1','b2','b3','b4','b5','b6','b7','b8','b9','b10','b11','b12','b13','b14','b15','b16','b17','b18','b19','b20']]
label = data[['status']]
tlabel = test[['status']]
model = Sequential()
model.add(Dense(32,activation='relu', input_dim=20))
model.add(Dropout(0.5))
model.add(Conv1D(32,5, activation='relu',padding='same',use_bias=True))
model.add(Dense(64,activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy', optimizer=sgd, metrics=['accuracy'])
model.fit(df1,label,epochs=10,batch_size=32)

0 个答案:

没有答案