Tensorflow--Day 1

来源:互联网 发布:java unix时间戳 时区 编辑:程序博客网 时间:2024/06/06 05:58
import tensorflow as tf# Model parametersW = tf.Variable([.3], dtype=tf.float32)b = tf.Variable([-.3], dtype=tf.float32)# Model input and outputx = tf.placeholder(tf.float32)linear_model = W * x + by = tf.placeholder(tf.float32)# lossloss = tf.reduce_sum(tf.square(linear_model - y)) # sum of the squares# optimizeroptimizer = tf.train.GradientDescentOptimizer(0.01)train = optimizer.minimize(loss)# training datax_train = [1, 2, 3, 4]y_train = [0, -1, -2, -3]# training loopinit = tf.global_variables_initializer()sess = tf.Session()sess.run(init) # reset values to wrongfor i in range(1000):  sess.run(train, {x: x_train, y: y_train})# evaluate training accuracycurr_W, curr_b, curr_loss = sess.run([W, b, loss], {x: x_train, y: y_train})print("W: %s b: %s loss: %s"%(curr_W, curr_b, curr_loss))

When run, it produces

W: [-0.9999969] b: [ 0.99999082] loss: 5.69997e-11

tf.estimator

tf.estimator is a high-level TensorFlow library that simplifies the mechanics of machine learning, including the following:

  1. running training loops
  2. running evaluation loops
  3. managing data sets

tf.estimator defines many common models.

import tensorflow as tf# NumPy is often used to load, manipulate and preprocess data.import numpy as np# Declare list of features. We only have one numeric feature. There are many# other types of columns that are more complicated and useful.feature_columns = [tf.feature_column.numeric_column("x", shape=[1])]# An estimator is the front end to invoke training (fitting) and evaluation# (inference). There are many predefined types like linear regression,# linear classification, and many neural network classifiers and regressors.# The following code provides an estimator that does linear regression.estimator = tf.estimator.LinearRegressor(feature_columns=feature_columns)# TensorFlow provides many helper methods to read and set up data sets.# Here we use two data sets: one for training and one for evaluation# We have to tell the function how many batches# of data (num_epochs) we want and how big each batch should be.x_train = np.array([1., 2., 3., 4.])y_train = np.array([0., -1., -2., -3.])x_eval = np.array([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, batch_size=4, num_epochs=None, shuffle=True)train_input_fn = tf.estimator.inputs.numpy_input_fn(    {"x": x_train}, y_train, batch_size=4, num_epochs=1000, shuffle=False)eval_input_fn = tf.estimator.inputs.numpy_input_fn(    {"x": x_eval}, y_eval, batch_size=4, num_epochs=1000, shuffle=False)# We can invoke 1000 training steps by invoking the  method and passing the# training data set.estimator.train(input_fn=input_fn, steps=1000)# Here we evaluate how well our model did.train_metrics = estimator.evaluate(input_fn=train_input_fn)eval_metrics = estimator.evaluate(input_fn=eval_input_fn)print("train metrics: %r"% train_metrics)print("eval metrics: %r"% eval_metrics)

When run, it produces

train metrics: {'loss': 1.227995e-11, 'global_step': 1000}eval metrics: {'loss': 0.01010036, 'global_step': 1000}
原创粉丝点击