【问题标题】:Neural network model from Keras not increasing in accuracy来自 Keras 的神经网络模型的准确性没有提高
【发布时间】:2021-11-05 01:21:22
【问题描述】:

我正在尝试建立一个预测模型,用于根据 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)

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

【问题讨论】:

    标签: python tensorflow keras bioinformatics


    【解决方案1】:

    尝试将批量大小从 2 增加到 16,并将 dropout 减少到 0.2 或更少。辍学太多了

    【讨论】:

    • 使用此技巧获得了 91.25% 的训练准确率,但验证准确率现在稳定在 47.5%。关于如何解决这个问题的任何想法?
    • 同时增加测试数据批量大小。 1000 个 epoch 也可以达到 50 到 100 个很好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 2016-08-02
    • 2018-01-10
    • 2017-09-06
    • 2017-08-05
    • 1970-01-01
    相关资源
    最近更新 更多