我的项目是试着从陀螺仪和加速计的数据中找出是否可以预测在电话旁边讲话的人的性别。我有315个例子(每个例子60秒),每个例子有2997条线,每条线代表来自陀螺/加速度计xyz轴的向量的大小。
我通过相同的种子对输入和输出进行了混洗,并对输入数据进行了标准化。我在60|20|20上拆分数据。在这个测试中,我尝试从加速计中查看是否有男性说话,因此输出是二进制的。
当我用当前模型训练数据时,有时我的准确率高达0.68,低至0.36,而损失几乎总是在0.69左右。我在for循环中运行了10次,平均准确率为0.5,损失为0.69。
第一个问题是,我尝试了多种类型的模型、学习率、优化算法等,但平均而言,我并不太成功。我应该尝试递归神经网络吗?我可以在哪里学习它?
第二个问题是,如果我训练模型的准确率为68%,即使我知道平均准确率为50%,也可以说模型有68%的准确率吗?
model = tf.keras.Sequential()
model.add(layers.Dense(512, activation='relu',input_shape = (2997,), kernel_regularizer=regularizers.l2(0.001)))
model.add(layers.Dropout(0.5))
for j in range(10) :
model.add(layers.Dense(1024, activation='relu', kernel_regularizer=regularizers.l2(0.001)))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(1, activation='sigmoid'))
lr_schedule = tf.keras.optimizers.schedules.InverseTimeDecay(
0.001,
decay_steps=200,
decay_rate=1,
staircase=True)
callbacks = [
tf.keras.callbacks.EarlyStopping(
monitor='val_loss', patience = 20
)
]
model.compile(optimizer=tf.keras.optimizers.RMSprop(learning_rate = lr_schedule),
loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
metrics = ['accuracy'])
history = model.fit(
train_vector_examples,
train_vector_labels,
validation_split = 0.25,
epochs =80,
callbacks=callbacks,
verbose=0,
shuffle=False
)
loss1, accuracy = model.evaluate(test_vector_examples, test_vector_labels)发布于 2020-09-16 20:42:06
这是我自己处理不同类型数据的经验;为了对您的问题有好的解决方案,您可能应该在提出任何模型/算法之前仔细研究数据的特征。
另外,从你的解释中,我可以看到每个陀螺仪/加速度计输入都具有秩3 (xyz)的形状,所以也许你可以尝试一些CNN架构,看看它是如何进行的。
https://stackoverflow.com/questions/63919665
复制相似问题