Machine learning 在Tensorflow中为教程示例选择num_epochs值
上的tensorflow教程中有一个估算器示例,他们在其中创建线性回归模型,如下所示:Machine learning 在Tensorflow中为教程示例选择num_epochs值,machine-learning,tensorflow,linear-regression,Machine Learning,Tensorflow,Linear Regression,上的tensorflow教程中有一个估算器示例,他们在其中创建线性回归模型,如下所示: 将tensorflow导入为tf 将numpy作为np导入 特征列=[tf.特征列.数字列(“x”,形状=[1])] 估计器=tf.估计器.线性累加器(特征列=特征列) x_列=np.数组([1,2,3,4]) y_列=np.数组([0,-1.,-2.,-3.])) x_eval=np.数组([2,5,8,1]) y_eval=np.array([-1.01,-4.1,-7,0.]) input_fn=tf.
将tensorflow导入为tf
将numpy作为np导入
特征列=[tf.特征列.数字列(“x”,形状=[1])]
估计器=tf.估计器.线性累加器(特征列=特征列)
x_列=np.数组([1,2,3,4])
y_列=np.数组([0,-1.,-2.,-3.]))
x_eval=np.数组([2,5,8,1])
y_eval=np.array([-1.01,-4.1,-7,0.])
input_fn=tf.estimator.inputs.numpy_input_fn({“x”:x_train},y_train,批大小=4,num_epochs=None,shuffle=True)
训练输入=tf.estimator.inputs.numpy输入=fn({“x”:x\u train},y\u train,批量大小=4,num\u epochs=1000,shuffle=False)
eval_input_fn=tf.estimator.inputs.numpy_input_fn({“x”:x_eval},y_eval,批大小=4,num_epochs=1000,shuffle=False)
估算器.序列(输入=输入,步数=1000)
训练度量=估计器。评估(输入=训练输入)
评估指标=估计器。评估(输入=评估输入)
打印(“列车指标:%r”%train\u指标)
打印(“评估指标:%r”%eval\u指标)
我的问题是“训练输入”和“评估输入”为什么需要选择“num\u epochs=1000”
这些是具有不同“num_epochs”值的输出:
num_epochs=1000
train metrics:{'global_step':1000,“loss':4.370838e-08,“average_loss':1.0927096e-08}
评估指标:{'global_step':1000,“损失”:0.010135064,“平均损失”:0.00253766}
num_epochs=1
train metrics:{'global_step':1000,“loss”:9.6500253e-07,“average_loss”:2.4125063e-07}
评估指标:{'global_step':1000,“损失”:0.010293347,“平均损失”:0.002573367}
当num_epochs=1时,我希望'loss'和'average_loss'的值相同。有人能帮我理解吗
谢谢。你的直觉是正确的:
0.002533766 == 0.010293347 / 4
或
或
然而,我也被难住了,为什么选择多个时期进行评估是有意义的,特别是如果
x_eval.shape[0]==batch_size
。也许他们只是想证明函数tf.estimator.inputs.numpy\u input\u fn
接受num\u epochs
作为参数。你的直觉是正确的:
0.002533766 == 0.010293347 / 4
或
或
然而,我也被难住了,为什么选择多个时期进行评估是有意义的,特别是如果x_eval.shape[0]==batch_size
。也许他们只是想证明函数tf.estimator.inputs.numpy\u input\u fn
接受num\u epochs
作为参数
average_loss == epoch_loss / x_eval.shape[0]