gpt4 book ai didi

tensorflow - 使准确性出现在我的结果中并解释损失和 val_loss 的结果

转载 作者:行者123 更新时间:2023-11-30 09:16:03 25 4
gpt4 key购买 nike

我是 tensorflow 新手,我正在尝试通过 github 中的示例来学习它,现在我找到了一个示例,但损失和 val_loss 的结果大于“1”(您可以在下面看到结果在 800 之间)和 700 )而通常在其他示例中,loss 和 val_loss 介于 0 和 1 之间)

另外我想知道如何使显示的准确性。这是代码。 https://github.com/simoninithomas/DNN-Speech-Recognizer/blob/master/train_utils.py

谢谢!

def train_model(input_to_softmax, 泡菜路径, 保存模型路径, train_json='train_corpus.json', valid_json='valid_corpus.json', 小批量大小=20, 频谱图=真, mfcc_dim=13, 优化器=SGD(lr=0.02,衰减=1e-6,动量=0.9,nesterov=True,clipnorm=5), 纪元=20, 详细=1, sort_by_duration=False, max_duration=10.0):

# create a class instance for obtaining batches of data
audio_gen = AudioGenerator(minibatch_size=minibatch_size,
spectrogram=spectrogram, mfcc_dim=mfcc_dim, max_duration=max_duration,
sort_by_duration=sort_by_duration)
# add the training data to the generator
audio_gen.load_train_data(train_json)
audio_gen.load_validation_data(valid_json)
# calculate steps_per_epoch
num_train_examples=len(audio_gen.train_audio_paths)
steps_per_epoch = num_train_examples//minibatch_size
# calculate validation_steps
num_valid_samples = len(audio_gen.valid_audio_paths)
validation_steps = num_valid_samples//minibatch_size

# add CTC loss to the NN specified in input_to_softmax
model = add_ctc_loss(input_to_softmax)

# CTC loss is implemented elsewhere, so use a dummy lambda function for the loss
model.compile(loss={'ctc': lambda y_true, y_pred: y_pred}, optimizer=optimizer)

# make results/ directory, if necessary
if not os.path.exists('results'):
os.makedirs('results')

# add checkpointer
checkpointer = ModelCheckpoint(filepath='results/'+save_model_path, verbose=0)

# train the model
hist = model.fit_generator(generator=audio_gen.next_train(), steps_per_epoch=steps_per_epoch,
epochs=epochs, validation_data=audio_gen.next_valid(), validation_steps=validation_steps,
callbacks=[checkpointer], verbose=verbose)

# save model loss
with open('results/'+pickle_path, 'wb') as f:

pickle.dump(hist.history, f)

纪元 1/20106/106 [================================] - 302s - 损失:839.6881 - val_loss:744.7609纪元 2/20106/106 [================================] - 276s - 损失:767.3973 - val_loss:727.8361纪元 3/20106/106 [================================] - 272s - 损失:752.6904 - val_loss:720.8375纪元 4/20106/106 [================================] - 261s - 损失:751.8432 - val_loss:728.3446纪元 5/20106/106 [================================] - 261s - 损失:752.1302 - val_loss:733.3166纪元 6/20106/106 [================================] - 264s - 损失:752.3786 - val_loss:722.4345纪元 7/20106/106 [================================] - 265s - 损失:752.7827 - val_loss:723.2651纪元 8/20106/106 [================================] - 263s - 损失:752.5077 - val_loss:736.0229纪元 9/20106/106 [================================] - 263s - 损失:752.5616 - val_loss:731.2018

最佳答案

您正在使用的损失在此pdf中进行了描述。 。

当您说准确性时,它可能意味着很多事情:

  • 单个单位准确度(对您拥有的标签进行平均。注意:由于是时间分类,同一数据点有多个标签)[将介于 0 和 1 之间]
  • 错误率:可以定义为预测标签与真实标签之间的编辑距离[在数据点上平均介于 0 和 MAX_LABELS 之间。
  • 所有时间步长和数据点的平均标签精度。

没有理由让它介于 0 和 1 之间。另一方面,你的损失是联结主义的时间损失。这种损失在每个时间步预测标签或空白标签。然后我们在标签之上使用交叉熵。两个概率分布的交叉熵只是一个正量,并且不在0和1之间。

因此这不是问题。如果您想查看准确性,您将需要一些测试数据并做出预测。您可以使用 Tensorflow 根据您想要的任何指标计算预期标签的准确度(如上所述),并将其用作您的准确度。从技术上讲,您可以使用 Tensorflow 中定义的任何指标:https://www.tensorflow.org/api_docs/python/tf/metrics/ ,在您的预测步骤之后。

关于tensorflow - 使准确性出现在我的结果中并解释损失和 val_loss 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55865232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com