我是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)