Keras的神经网络模型精度没有提高



我正试图基于治疗肽的word2vec载体建立一个用于识别治疗肽的预测模型。该数据集有100个阳性和100个阴性示例。我已经用Word2Vec嵌入了肽序列,并试图训练我的神经网络。然而,准确率保持在51.88%

我尝试过的:更改损失函数(为二进制交叉熵(,每层中的节点数

这是我的代码:

import sklearn
a = sklearn.utils.shuffle(arrayvectors, random_state=1)
b = sklearn.utils.shuffle(labels, random_state=1)
dfa = pd.DataFrame(a, columns=None)
dfb = pd.DataFrame(b, columns=None)
X = dfa.iloc[:]
y = dfb.iloc[:]
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2, random_state=300)
X_train = np.asarray(X_train)
X_test = np.asarray(X_test)
y_train = np.asarray(y_train)
y_test = np.asarray(y_test)
y_train = y_train.astype(np.float32)
y_test = y_test.astype(np.float32)
## train data
class trainData(Dataset):

def __init__(self, X_data, y_data):
self.X_data = X_data
self.y_data = y_data

def __getitem__(self, index):
return self.X_data[index], self.y_data[index]

def __len__ (self):
return len(self.X_data)

train_data = trainData(torch.FloatTensor(X_train), 
torch.FloatTensor(y_train))
## test data    
class testData(Dataset):

def __init__(self, X_data):
self.X_data = X_data

def __getitem__(self, index):
return self.X_data[index]

def __len__ (self):
return len(self.X_data)

test_data = testData(torch.FloatTensor(X_test))

EPOCHS = 100
BATCH_SIZE = 2
LEARNING_RATE = 0.0001
train_loader = DataLoader(train_data, batch_size=BATCH_SIZE, shuffle=True)
test_loader = DataLoader(test_data, batch_size=1)
# make mode
model = Sequential()
model.add(Dense(64, activation='relu', input_shape=(4,)))
model.add(Dropout(0.5))
model.add(Dense(16, input_dim=1, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(12,activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1,activation='sigmoid'))
model.summary()
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=1000, batch_size=64)

如果你有任何想法,请告诉我!

尝试将批处理大小从2增加到16,并将丢弃量减少到.2或更小。的辍学率太高了

最新更新