【TensorFlow】TensorFlow从浅入深系列之七 -- 教你使用验证数据集判断模型效果

本文是《TensorFlow从浅入深》系列之第7篇

TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法)

TensorFlow从浅入深系列之二 -- 教你通过思维导图深度理解深层神经网络

TensorFlow从浅入深系列之三 -- 教你如何对MNIST手写识别

TensorFlow从浅入深系列之四 -- 教你深入理解过拟合问题(正则化)

TensorFlow从浅入深系列之五 -- 教你详解滑动平均模型

TensorFlow从浅入深系列之六 -- 教你深入理解经典损失函数(交叉熵、均方误差)

在(TensorFlow从浅入深系列之三 -- 教你如何对MNIST手写识别)使用神经网络解决MNIST问题的程序中,开始的位置设置了初始学习率、学习率衰减率、隐藏层节点数、迭代轮数等7中不同的参数。一般情况下,配置神经网络的这些参数都是需要通过实验来调整的。

因为神经网络是对未知数据提供判断,所以我们不能直接通过模型在测试数据上的效果来选择参数,这样容易导致神经网络模型过度拟合测试数据,从而失去对未知数据的预判能力。

所以,为了顾及模型在未知数据上的效果,需要保证测试数据在训练过程中是不可见的

因此,为了评测神经网络模型在不同参数下的效果,一般会从训练数据中抽取一部分作为验证数据。使用验证数据评判不同参数取值下的表现。有时也可以采用交叉验证的方式来验证模型效果,但是采用交叉验证会花费大量时间。所以在海里数据的情况下,一般更多地采用验证数据集的形式来评判模型的效果。


在(TensorFlow从浅入深系列之三 -- 教你如何对MNIST手写识别)加入以下代码,得到每1000轮迭代后,使用滑动平均的模型在验证数据和测试数据上的正确率。

# 计算滑动平均模型在测试数据和验证数据上的正确率
validate_acc = sess.run(accuracy, feed_dict=validate_feed)
test_acc = sess.run(accuracy, feed_dict=test_feed)

# 输出正确率信息。
print('After %d training step(s), validation accuracy using average model is %g, ' 
      'test accuracy using average model is %g' % (i, validate_acc, test_acc))

图5-2给出了通过上面代码得到的每1000轮滑动平均模型在不同数据集上的正确率曲线。其中灰色曲线表示随着迭代轮数的增加,模型在验证数据上的正确率;黑色的曲线表示在测试数据上的正确率。从图中可以看出,虽然这两条曲线不会完全重合,但是这两条曲线的趋势基本一样,而且他们的相关系数大于0.999。说明,在MNIST问题上,完全可以通过模型在验证数据上的表现来判断一个模型的优劣。

以上结论是针对MNIST数据集的,对于其他问题,需要具体问题具体分析。一般来说,验证数据分布越接近测试数据分布,模型在验证数据上的表现可以体现模型在测试数据上的表现。神经网络在验证数据上的效果来选取模型的参数是一个可行的方案。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TensorFlow Estimator是TensorFlow的高级API之一,用于简化模型训练和评估的过程。要验证TensorFlow Estimator是否可以使用,你可以完成以下步骤: 1. 确认你已经安装了TensorFlow。可以在Python控制台中输以下命令:`import tensorflow as tf`。如果没有出现错误,则说明TensorFlow已经被成功安装。 2. 确认你已经安装了TensorFlow Estimator。可以在Python控制台中输以下命令:`import tensorflow_estimator as tfest`。如果没有出现错误,则说明TensorFlow Estimator已经被成功安装。 3. 编写一个简单的TensorFlow Estimator模型,并使用它来训练和评估数据集。以下是一个示例代码: ```python import tensorflow as tf import tensorflow_estimator as tfest # 准备数据集 (x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data() x_train = x_train / 255.0 x_test = x_test / 255.0 y_train = tf.keras.utils.to_categorical(y_train) y_test = tf.keras.utils.to_categorical(y_test) # 定义特征列 feature_columns = [tf.feature_column.numeric_column("x", shape=[28, 28])] # 定义Estimator estimator = tfest.DNNClassifier( feature_columns=feature_columns, hidden_units=[256, 32], optimizer=tf.optimizers.Adam(learning_rate=0.001), n_classes=10, model_dir="./model" ) # 训练模型 train_input_fn = tf.estimator.inputs.numpy_input_fn( x={"x": x_train}, y=y_train, batch_size=128, num_epochs=None, shuffle=True ) estimator.train(input_fn=train_input_fn, steps=1000) # 评估模型 test_input_fn = tf.estimator.inputs.numpy_input_fn( x={"x": x_test}, y=y_test, num_epochs=1, shuffle=False ) eval_results = estimator.evaluate(input_fn=test_input_fn) print(eval_results) ``` 4. 运行代码,如果没有出现错误并且能够正确训练和评估模型,则说明TensorFlow Estimator可以使用。 总之,如果你已经成功地安装了TensorFlowTensorFlow Estimator,并且可以使用它们来训练和评估模型,则说明它们可以正常使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值