如何将某些功能应用到深度学习模型中?

时间:2018-05-14 22:12:13

标签: python python-3.x neural-network keras deep-learning

我正在尝试构建一个MLP模型,该模型采用由9列组成的数据集 这是一个样本(患者编号,磨时/秒的时间,X Y和Z的归一化,峰度,偏斜,俯仰,滚动和偏航,标签)。

from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
import pandas as pd
import itertools
import math
np.random.seed(7)

train = np.loadtxt("featwithsignalsTRAIN.txt", delimiter=",")
test = np.loadtxt("featwithsignalsTEST.txt", delimiter=",")

x_train = train[:,[2,3,4,5,6,7]]
x_test = test[:,[2,3,4,5,6,7]]
y_train = train[:,8]
y_test = test[:,8]

model = Sequential()
model.add(Dense(500, input_dim=6, activation='relu'))
model.add(Dense(300,  activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy' , optimizer='adam', metrics=['accuracy'])
# Fit the model
batch_size = 128
epochs = 10

hist = model.fit(x_train, y_train,
      batch_size=batch_size,
      epochs=epochs,
      verbose=2,
      )
avg = np.mean(hist.history['acc'])
print('The Average Testing Accuracy is', avg)
##Evaluate the model
score=model.evaluate(x_test, y_test, verbose=2)
print(score)

这是我的代码,我的代码中没有错误,但有和没有功能的结果是相同的...所以我问我是否使用正确的方法将这些功能提供给模型。

public void actionPerformed(ActionEvent event){

String eventName = event.getActionCommand();
if (eventName.equals("Celcius")){
    String label5;
    double word1;
    label5 = word1.getText();
    label5 = (((Double.parseDouble(word1)*9)%5)+32) + "Degree's Celcuis" ; 
    label5.setText(Double.toString(word1));
}
else if (eventName.equals("Fahrenheit")){
    String label5;
    double word1;
    label5 = word1.getText();
    label5 = ((((Double.parseDouble(word1)-32)*5)%9)) + "Degree'sFahrenheit" ;      
    label5.setText(Double.toString(word1));
    }   
}

1 个答案:

答案 0 :(得分:0)

您的模型没有任何问题,但您的模型可能没有学到任何有用的东西。可能是您使用的学习成绩太高或太小,您需要更多的时代,或者只是您的功能无用。

以下是一些建议:

您可以直接向您的fit方法添加一个验证集,该方法将在每个时代结束时计算此集合上的相同指标,并允许您查看您的模型是否学到了有用的东西,或者它是否仅仅过度拟合了培训无需等待模型完成培训即可设置。 (确保使用verbose = 1或2来查看培训过程。)

model.fit( ... , validation_data = (x_test , y_test) , ...)

我看到你使用了历史回调。一个好的做法是看看准确度如何从一个时代变为另一个时代,而不是采取均值。这可以让您查看您的网络是否有效地学习了一些东西。一个网络很少聚集在第一个时代。

您是否了解功能的“实用性”?您可以通过在创建模型之前执行探索性分析或通过拟合更“传统”的模型(线性回归,决策树,随机森林......)来了解这一点。在安装神经网络之前强烈建议这样做,这也允许你比较不同类型的模型,看看你是否真的需要使用神经网络。

如果您确定您的功能至少比随机猜测更好,请尝试使用学习率。较高的学习率可能导致模型超过最小值,学习率太小可能导致模型学习非常缓慢或陷入局部最小值。您也可以尝试调整时期数。