繁体   English   中英

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

[英]How to apply some features into a deep learning model?

我正在尝试建立一个MLP模型,该模型需要一个由9列组成的数据集,这是一个样本(患者数,以毫秒/秒为单位的时间,XY和Z的归一化,峰度,偏度,俯仰,横摇和偏航,标签) 。

1,15,-0.248010047716,0.00378335508419,-0.0152548459993,-86.3738760481,0.872322164158,-3.51314800063,0

1,31,-0.248010047716,0.00378335508419,-0.0152548459993,-86.3738760481,0.872322164158,-3.51314800063,0

1,46,-0.267422664673,0.0051143782875,-0.0191247001961,-85.7662354031,1.0928406847,-4.08015176908,0

1,62,-0.267422664673,0.0051143782875,-0.0191247001961,-85.7662354031,1.0928406847,-4.08015176908,0

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

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)

您的模型没有错,但是您的模型可能没有学到任何有用的东西。 可能是您使用的学习太高或太小,您需要更多的纪元,或者仅仅是您的功能没用。

这里有一些建议:

您可以直接将验证集添加到fit方法中,该验证集将在每个时期结束时对此集合计算相同的度量标准,并允许您查看模型是否学到了有用的东西,或者只是在训练集上过度拟合而无需等待模型完成训练。 (确保您使用详细= 1或2来查看培训过程)。

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

我看到您使用了历史回调。 一个好的做法是查看准确性是如何从一个时代到另一个时代的变化,而不是取平均值。 这使您可以查看网络是否有效地学习了一些东西。 网络很少会融合到最初的时代。

您是否知道功能的“有用性”? 您可以通过在创建模型之前进行探索性分析或拟合更常规的模型(线性回归,决策树,随机森林等)来了解这一点。 强烈建议在装配神经网络之前使用它,这还使您可以比较不同类型的模型,并确定是否确实需要使用神经网络。

如果您确定自己的功能至少比随机猜测的性能更好,请尝试以学习速度进行游戏。 高学习率可能导致模型超出最小值,而学习率太小可能导致模型学习速度非常慢或陷入局部最小值。 您也可以尝试调整时期数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM