In [1]:
import tensorflow as tf

In [2]:
node1 = tf.constant(3.0, dtype=tf.float32)

In [3]:
node2 = tf.constant(4.0)

In [4]:
print(node1, node2)


Tensor("Const:0", shape=(), dtype=float32) Tensor("Const_1:0", shape=(), dtype=float32)

In [8]:
sess = tf.Session()
print(sess.run([node1, node2]))


[3.0, 4.0]

In [13]:
node3 = tf.add(node1, node2)
print(node3)
print(sess.run([node3]))


Tensor("Add_3:0", shape=(), dtype=float32)
[7.0]

In [17]:
a = tf.placeholder(tf.float32)
b = tf.placeholder(tf.float32)
adder_node = a + b
print(sess.run([adder_node], {a: 1, b: 1})

In [20]:
print(sess.run([adder_node], {a: 1, b: 1}))


[2.0]

In [21]:
print(sess.run([adder_node], {a: [1, 2, 3], b: 1}))


[array([ 2.,  3.,  4.], dtype=float32)]

In [23]:
W = tf.Variable([.3], dtype = tf.float32)
b = tf.Variable([-.3], dtype = tf.float32)

In [38]:
x = tf.placeholder(tf.float32)
linear_model = W * x + b

In [39]:
init = tf.global_variables_initializer()
sess.run(init)

In [42]:
print(sess.run(linear_model, {x: [1, 2, 3, 4]}))


[ 0.          0.30000001  0.60000002  0.90000004]

In [44]:
y = tf.placeholder(tf.float32)
squared_deltas = tf.square(linear_model - y)
loss = tf.reduce_sum(squared_deltas)
print(sess.run(loss, {x: [1, 2, 3, 4], y: [0, -1, -2, -3]}))


23.66

In [45]:
fixW = tf.assign(W, [-1.])
fixb = tf.assign(b, [1.])
sess.run([fixW, fixb])
print(sess.run(loss, {x: [1, 2, 3, 4], y: [0, -1, -2, -3]}))


0.0

In [47]:
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(loss)

In [48]:
sess.run(init)
for i in range(1000):
    sess.run(train, {x: [1, 2, 3, 4], y: [0, -1, -2, -3]})

In [49]:
print(sess.run([W, b]))


[array([-0.9999969], dtype=float32), array([ 0.99999082], dtype=float32)]

In [50]:
import numpy as np

In [51]:
feature_columns = [tf.feature_column.numeric_column("x", shape=[1])]

In [52]:
estimator = tf.estimator.LinearRegressor(feature_columns=feature_columns)


INFO:tensorflow:Using default config.
WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmp9h5pt3zg
INFO:tensorflow:Using config: {'_save_checkpoints_steps': None, '_model_dir': '/tmp/tmp9h5pt3zg', '_save_checkpoints_secs': 600, '_keep_checkpoint_max': 5, '_log_step_count_steps': 100, '_tf_random_seed': 1, '_session_config': None, '_save_summary_steps': 100, '_keep_checkpoint_every_n_hours': 10000}

In [53]:
estimator = tf.estimator.LinearRegressor(feature_columns=feature_columns)


INFO:tensorflow:Using default config.
WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmp2qg9d2e4
INFO:tensorflow:Using config: {'_save_checkpoints_steps': None, '_model_dir': '/tmp/tmp2qg9d2e4', '_save_checkpoints_secs': 600, '_keep_checkpoint_max': 5, '_log_step_count_steps': 100, '_tf_random_seed': 1, '_session_config': None, '_save_summary_steps': 100, '_keep_checkpoint_every_n_hours': 10000}

In [64]:
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)

In [65]:
estimator.train(input_fn=input_fn, steps=1000)


INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Saving checkpoints for 1 into /tmp/tmp2qg9d2e4/model.ckpt.
INFO:tensorflow:step = 1, loss = 23.0
INFO:tensorflow:global_step/sec: 635.633
INFO:tensorflow:step = 101, loss = 0.364433 (0.158 sec)
INFO:tensorflow:global_step/sec: 917.341
INFO:tensorflow:step = 201, loss = 0.0919232 (0.109 sec)
INFO:tensorflow:global_step/sec: 925.045
INFO:tensorflow:step = 301, loss = 0.0173294 (0.108 sec)
INFO:tensorflow:global_step/sec: 951.607
INFO:tensorflow:step = 401, loss = 0.00200547 (0.105 sec)
INFO:tensorflow:global_step/sec: 1031.51
INFO:tensorflow:step = 501, loss = 0.00277813 (0.097 sec)
INFO:tensorflow:global_step/sec: 1033.97
INFO:tensorflow:step = 601, loss = 0.000307328 (0.097 sec)
INFO:tensorflow:global_step/sec: 1017.79
INFO:tensorflow:step = 701, loss = 9.8951e-05 (0.098 sec)
INFO:tensorflow:global_step/sec: 830.947
INFO:tensorflow:step = 801, loss = 4.20263e-05 (0.121 sec)
INFO:tensorflow:global_step/sec: 1010.67
INFO:tensorflow:step = 901, loss = 7.7881e-06 (0.099 sec)
INFO:tensorflow:Saving checkpoints for 1000 into /tmp/tmp2qg9d2e4/model.ckpt.
INFO:tensorflow:Loss for final step: 1.95116e-06.
Out[65]:
<tensorflow.python.estimator.canned.linear.LinearRegressor at 0x7f9286fb1ac8>

In [68]:
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)


INFO:tensorflow:Starting evaluation at 2017-10-31-22:34:35
INFO:tensorflow:Restoring parameters from /tmp/tmp2qg9d2e4/model.ckpt-1000
INFO:tensorflow:Finished evaluation at 2017-10-31-22:34:36
INFO:tensorflow:Saving dict for global step 1000: average_loss = 5.55089e-07, global_step = 1000, loss = 2.22035e-06
INFO:tensorflow:Starting evaluation at 2017-10-31-22:34:36
INFO:tensorflow:Restoring parameters from /tmp/tmp2qg9d2e4/model.ckpt-1000
INFO:tensorflow:Finished evaluation at 2017-10-31-22:34:37
INFO:tensorflow:Saving dict for global step 1000: average_loss = 0.00259139, global_step = 1000, loss = 0.0103656
train metrics: {'average_loss': 5.5508872e-07, 'loss': 2.2203549e-06, 'global_step': 1000}
eval metrics: {'average_loss': 0.0025913899, 'loss': 0.01036556, 'global_step': 1000}

In [ ]: