如何通过 Tuning 改进深度学习

时间:2021-06-21 08:10:24

标签: python deep-learning

所以我使用深度学习来提高我的模型准确度,但是当我使用贝叶斯分类器检查时,我得到了 91.67% 的准确度 然后我检查了深度学习,但它并没有提高最大我得到 91.67%

我必须提高我的准确性,我想尝试使用 Tuning,但我不知道如何

我的数据集有 3 个类

所以请帮帮我,至少我得到了 92% 的准确率

    import pandas
    from keras.models import Sequential
    from keras.layers import Dense
    from keras.wrappers.scikit_learn import KerasClassifier
    from keras.utils import np_utils
    from sklearn.model_selection import cross_val_score
    from sklearn.model_selection import KFold
    from sklearn.preprocessing import LabelEncoder
    from sklearn.pipeline import Pipeline
    from sklearn.model_selection import train_test_split
    
    # load dataset
    dataframe = pandas.read_csv("pca_aug.csv", header=None)
    dataset = dataframe.values
    X = dataset[:,0:300].astype(float)
    Y = dataset[:,300]
    xtrain,xtest,ytrain,ytest= train_test_split(X,Y,test_size=0.4,random_state=0)
    
    # encode class values as integers
    def konversi(Y):
      encoder = LabelEncoder()
      encoder.fit(Y)
      encoded_Y = encoder.transform(Y)
      # convert integers to dummy variables (i.e. one hot encoded)
      dummy_y = np_utils.to_categorical(encoded_Y)
      return dummy_y
    
    ytrain_dummy= konversi(ytrain)
    ytest_dummy= konversi(ytest)
    
    # create model
    model = Sequential()
    model.add(Dense(1000, input_dim=300, activation='relu'))
    model.add(Dense(3, activation='softmax'))
    # Compile model
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
    
    nepochs = 20
    nbatch = 5
    
    
    model.fit(xtrain, ytrain_dummy, epochs=nepochs, batch_size=nbatch)
    _, accuracy = model.evaluate(xtest, ytest_dummy)
    print('Accuracy: %.2f' % (accuracy*100))

1 个答案:

答案 0 :(得分:0)

你不能对准确率设置限制,在训练模型之前,它会给结果带来偏差。性能指标取决于数据、数据中存在的噪声、训练和模型。

您可以使用像 keras-tuner 这样的超参数搜索库。

import kerastuner as kt
from tensorflow import keras

def build_model(hp):
  ...
  return model

tuner = kt.RandomSearch(
    build_model,
    objective='val_loss',
    max_trials=5)

tuner.search(x_train, y_train, epochs=5, validation_data=(x_val, y_val))
best_model = tuner.get_best_models()[0]