在keras中实现查看其训练loss值

想要查看每次训练模型后的 loss 值变化需要如下操作

loss_value= [ ]
self.history = model.fit(state,target_f,epochs=1, batch_size =32)
b = abs(float(self.history.history[‘loss'][0]))
loss_value.append(b)
print(loss_value)
loss_value = np.array( loss_value)
x = np.array(range(len( loss_value)))
plt.plot(x, loss_value, c = ‘g')
pt.svefit('c地址‘, dpi= 100)
plt.show()

scipy.sparse 稀疏矩阵 函数集合

pandas 用于在各种文件中提取,并处理分析数据; 有DataFrame数据结构,类似表格。

x=np.linspace(-10, 10, 100) 生成100个在-10到10之间的数组

补充知识:对keras训练过程中loss,val_loss,以及accuracy,val_accuracy的可视化

我就废话不多说了,大家还是直接看代码吧!

 hist = model.fit_generator(generator=data_generator_reg(X=x_train, Y=[y_train_a,y_train_g], batch_size=batch_size),
         steps_per_epoch=train_num // batch_size,
         validation_data=(x_test, [y_test_a,y_test_g]),
         epochs=nb_epochs, verbose=1,
         workers=8, use_multiprocessing=True,
         callbacks=callbacks)

 logging.debug("Saving weights...")
 model.save_weights(os.path.join(db_name+"_models/"+save_name, save_name+'.h5'), overwrite=True)
 pd.DataFrame(hist.history).to_hdf(os.path.join(db_name+"_models/"+save_name, 'history_'+save_name+'.h5'), "history")

在训练时,会输出如下打印:

640/640 [==============================] - 35s 55ms/step - loss: 4.0216 - mean_absolute_error: 4.6525 - val_loss: 3.2888 - val_mean_absolute_error: 3.9109

有训练loss,训练预测准确度,以及测试loss,以及测试准确度,将文件保存后,使用下面的代码可以对训练以及评估进行可视化,下面有对应的参数名称:

loss,mean_absolute_error,val_loss,val_mean_absolute_error

import pandas as pd
import matplotlib.pyplot as plt
import argparse
import os
import numpy as np

def get_args():
 parser = argparse.ArgumentParser(description="This script shows training graph from history file.")
 parser.add_argument("--input", "-i", type=str, required=True,
      help="path to input history h5 file")
 args = parser.parse_args()
 return args

def main():
 args = get_args()
 input_path = args.input

 df = pd.read_hdf(input_path, "history")
 print(np.min(df['val_mean_absolute_error']))
 input_dir = os.path.dirname(input_path)
 plt.plot(df["loss"], '-o', label="loss (age)", linewidth=2.0)
 plt.plot(df["val_loss"], '-o', label="val_loss (age)", linewidth=2.0)
 plt.xlabel("Number of epochs", fontsize=20)
 plt.ylabel("Loss", fontsize=20)
 plt.legend()
 plt.grid()
 plt.savefig(os.path.join(input_dir, "loss.pdf"), bbox_inches='tight', pad_inches=0)
 plt.cla()

 plt.plot(df["mean_absolute_error"], '-o', label="training", linewidth=2.0)
 plt.plot(df["val_mean_absolute_error"], '-o', label="validation", linewidth=2.0)
 ax = plt.gca()
 ax.set_ylim([2,13])
 ax.set_aspect(0.6/ax.get_data_ratio())
 plt.xticks(fontsize=20)
 plt.yticks(fontsize=20)
 plt.xlabel("Number of epochs", fontsize=20)
 plt.ylabel("Mean absolute error", fontsize=20)
 plt.legend(fontsize=20)
 plt.grid()
 plt.savefig(os.path.join(input_dir, "performance.pdf"), bbox_inches='tight', pad_inches=0)

if __name__ == '__main__':
 main()

以上这篇在keras中实现查看其训练loss值就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Keras之自定义损失(loss)函数用法说明

    在Keras中可以自定义损失函数,在自定义损失函数的过程中需要注意的一点是,损失函数的参数形式,这一点在Keras中是固定的,须如下形式: def my_loss(y_true, y_pred): # y_true: True labels. TensorFlow/Theano tensor # y_pred: Predictions. TensorFlow/Theano tensor of the same shape as y_true . . . return scalar #返回一个标量

  • keras中的loss、optimizer、metrics用法

    用keras搭好模型架构之后的下一步,就是执行编译操作.在编译时,经常需要指定三个参数 loss optimizer metrics 这三个参数有两类选择: 使用字符串 使用标识符,如keras.losses,keras.optimizers,metrics包下面的函数 例如: sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) model.compile(loss='categorical_crossentropy', opt

  • 使用Keras 实现查看model weights .h5 文件的内容

    Keras的模型是用hdf5存储的,如果想要查看模型,keras提供了get_weights的函数可以查看: for layer in model.layers: weights = layer.get_weights() # list of numpy array 而通过hdf5模块也可以读取:hdf5的数据结构主要是File - Group - Dataset三级,具体操作API可以看官方文档.weights的tensor保存在Dataset的value中,而每一集都会有attrs保存各网络

  • keras 自定义loss损失函数,sample在loss上的加权和metric详解

    首先辨析一下概念: 1. loss是整体网络进行优化的目标, 是需要参与到优化运算,更新权值W的过程的 2. metric只是作为评价网络表现的一种"指标", 比如accuracy,是为了直观地了解算法的效果,充当view的作用,并不参与到优化过程 在keras中实现自定义loss, 可以有两种方式,一种自定义 loss function, 例如: # 方式一 def vae_loss(x, x_decoded_mean): xent_loss = objectives.binary_

  • 在keras中实现查看其训练loss值

    想要查看每次训练模型后的 loss 值变化需要如下操作 loss_value= [ ] self.history = model.fit(state,target_f,epochs=1, batch_size =32) b = abs(float(self.history.history['loss'][0])) loss_value.append(b) print(loss_value) loss_value = np.array( loss_value) x = np.array(range

  • keras中模型训练class_weight,sample_weight区别说明

    keras 中fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None) 官方文档

  • keras中epoch,batch,loss,val_loss用法说明

    1.epoch Keras官方文档中给出的解释是:"简单说,epochs指的就是训练过程接中数据将被"轮"多少次" (1)释义: 训练过程中当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个epoch,网络会在每个epoch结束时报告关于模型学习进度的调试信息. (2)为什么要训练多个epoch,即数据要被"轮"多次 在神经网络中传递完整的数据集一次是不够的,对于有限的数据集(是在批梯度下降情况下),使用一个迭代过程,更新权重一

  • 在pytorch中查看可训练参数的例子

    pytorch中我们有时候可能需要设定某些变量是参与训练的,这时候就需要查看哪些是可训练参数,以确定这些设置是成功的. pytorch中model.parameters()函数定义如下: def parameters(self): r"""Returns an iterator over module parameters. This is typically passed to an optimizer. Yields: Parameter: module paramete

  • 浅谈keras中loss与val_loss的关系

    loss函数如何接受输入值 keras封装的比较厉害,官网给的例子写的云里雾里, 在stackoverflow找到了答案 You can wrap the loss function as a inner function and pass your input tensor to it (as commonly done when passing additional arguments to the loss function). def custom_loss_wrapper(input_

  • Keras使用ImageNet上预训练的模型方式

    我就废话不多说了,大家还是直接看代码吧! import keras import numpy as np from keras.applications import vgg16, inception_v3, resnet50, mobilenet #Load the VGG model vgg_model = vgg16.VGG16(weights='imagenet') #Load the Inception_V3 model inception_model = inception_v3.I

  • keras中的backend.clip用法

    如下所示: keras.backend.clip(x, min_value, max_value) 逐元素clip(将超出指定范围的数强制变为边界值) 参数 x: 张量或变量. min_value: Python 浮点或整数. max_value: Python 浮点或整数. 返回 一个张量. import tensorflow as tf from keras import backend a = tf.constant(2.1) #定义tensor常量 b = backend.clip(a,

  • 对Keras中predict()方法和predict_classes()方法的区别说明

    1 predict()方法 当使用predict()方法进行预测时,返回值是数值,表示样本属于每一个类别的概率,我们可以使用numpy.argmax()方法找到样本以最大概率所属的类别作为样本的预测标签. 2 predict_classes()方法 当使用predict_classes()方法进行预测时,返回的是类别的索引,即该样本所属的类别标签.以卷积神经网络中的图片分类为例说明,代码如下: 补充知识:keras中model.evaluate.model.predict和model.predi

  • 浅谈keras中自定义二分类任务评价指标metrics的方法以及代码

    对于二分类任务,keras现有的评价指标只有binary_accuracy,即二分类准确率,但是评估模型的性能有时需要一些其他的评价指标,例如精确率,召回率,F1-score等等,因此需要使用keras提供的自定义评价函数功能构建出针对二分类任务的各类评价指标. keras提供的自定义评价函数功能需要以如下两个张量作为输入,并返回一个张量作为输出. y_true:数据集真实值组成的一阶张量. y_pred:数据集输出值组成的一阶张量. tf.round()可对张量四舍五入,因此tf.round(

随机推荐