使用estimator重写tensorflow入门程序

忍不住进入机器学习这个坑,决定从tensorflow教程入门。
看了tensorflow官方文档的入门篇:https://www.tensorflow.org/get_started/get_started,后文介绍了高级api estimator的使用,尝试了一下,结果不会用,查了些资料,用estimator把入门篇那个程序重写了一下,记录代码如下:

import numpy as np
import tensorflow as tf

# 定义特征值为x
feature_columns = [tf.feature_column.numeric_column("x")]
# 选择模型为线性回归
estimator = tf.estimator.LinearRegressor(feature_columns=feature_columns)

# 准备训练数据
x_train = np.array([1., 2., 3., 4.])
y_train = np.array([0., -1., -2., -3.])
train_input_fn = tf.estimator.inputs.numpy_input_fn({"x": x_train}, y_train, batch_size=1, num_epochs=None,
                                                    shuffle=False)
# 训练模型
estimator.train(input_fn=train_input_fn, steps=3000)

# 显示训练结果
print("---train result ---")
for var in estimator.get_variable_names():
    print(var + "    =>%r" % estimator.get_variable_value(var))
print()

# 预测x=[4]的时候的y值
samples = np.array([4])
predict_input_fn = tf.estimator.inputs.numpy_input_fn({"x": samples}, batch_size=1, num_epochs=1, shuffle=False)
predict_result = list(estimator.predict(predict_input_fn))
print("predict_result    =>%r" % predict_result)

# 评估 x=[4], y=[-3.1] 与模型之间的差距
x_eval = np.array([4])
y_eval = np.array([-3.1])
eval_input_fn = tf.estimator.inputs.numpy_input_fn({"x": x_eval}, y_eval, batch_size=1, num_epochs=1, shuffle=False)
eval_result = estimator.evaluate(eval_input_fn)
print("eval_result    =>%r" % eval_result)

运行结果如下:

---train result ---
['global_step', 'linear/linear_model/bias_weights', 'linear/linear_model/bias_weights/part_0/Ftrl', 'linear/linear_model/bias_weights/part_0/Ftrl_1', 'linear/linear_model/x/weights', 'linear/linear_model/x/weights/part_0/Ftrl', 'linear/linear_model/x/weights/part_0/Ftrl_1']
global_step    =>3000
linear/linear_model/bias_weights    =>array([ 0.99999285], dtype=float32)
linear/linear_model/bias_weights/part_0/Ftrl    =>array([ 131.23556519], dtype=float32)
linear/linear_model/bias_weights/part_0/Ftrl_1    =>array([-57.27864075], dtype=float32)
linear/linear_model/x/weights    =>array([[-0.99999756]], dtype=float32)
linear/linear_model/x/weights/part_0/Ftrl    =>array([[ 685.30853271]], dtype=float32)
linear/linear_model/x/weights/part_0/Ftrl_1    =>array([[ 130.8916626]], dtype=float32)

predict_result    =>[{'predictions': array([-2.99999738], dtype=float32)}]
eval_result    =>{'average_loss': 0.010000505, 'loss': 0.010000505, 'global_step': 3000}

根据变量名称,可以知道W=’linear/linear_model/weights’ = -0.99999756,b=linear/linear_model/bias_weights=0.99999285, 和入门篇结果基本一致。

estimator除了训练还提供了预测函数和评估函数:
estimator.predict:给定x,计算出y值
estimator.evaluate:给定x和y,计算出差值大小

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值