In [1]:
import tensorflow as tf

In [2]:
tf.__version__


Out[2]:
'1.3.0'

In [3]:
node1 = tf.constant(3.0, dtype=tf.float32)
node2 = tf.constant(4.0)
print(node1, node2)


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

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


[3.0, 4.0]

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


node3: Tensor("Add_2:0", shape=(), dtype=float32)
sess.run(node3): 7.0

In [7]:
a = tf.placeholder(tf.float32)
b = tf.placeholder(tf.float32)
adder_node = a + b

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


7.5
[ 3.  7.]

In [13]:
add_and_triple = adder_node * 3.
print(sess.run(add_and_triple, {a:3, b:4.5}))


22.5

In [14]:
W = tf.Variable([.3], dtype=tf.float32)
b = tf.Variable([-.3], dtype=tf.float32)
x = tf.placeholder(tf.float32)
linear_model = W * x + b

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

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


[ 0.          0.30000001  0.60000002  0.90000004]

In [20]:
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 [24]:
print(sess.run([W, b]))


[array([ 0.30000001], dtype=float32), array([-0.30000001], dtype=float32)]

In [29]:
fixW = tf.assign(W, [-1.])
fixb = tf.assign(b, [1.])
print(sess.run([fixW, fixb]))


[array([-1.], dtype=float32), array([ 1.], dtype=float32)]

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


[array([-1.], dtype=float32), array([ 1.], dtype=float32)]

In [31]:
print(sess.run(loss, {x: [1, 2, 3, 4], y: [0, -1, -2, -3]}))


0.0

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

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


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

In [38]:
import tensorflow as tf

# model parameters
W = tf.Variable([.3], dtype=tf.float32)
b = tf.Variable([-.3], dtype=tf.float32)

# model input and output
x = tf.placeholder(tf.float32)
linear_model = W * x + b
y = tf.placeholder(tf.float32)

# loss
loss = tf.reduce_sum(tf.square(linear_model - y))

# optimizer
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(loss)

# training data
x_train = [1, 2, 3, 4]
y_train = [0, -1, -2, -3]

# training loop
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
for i in range(1000):
    sess.run(train, {x: x_train, y: y_train})

# evaluate training accuracy
curr_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))


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

In [41]:
import tensorflow as tf
import numpy as np

feature_columns = [tf.feature_column.numeric_column('x', shape=[1])]
estimator = tf.estimator.LinearRegressor(feature_columns=feature_columns)

# dataset
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)

estimator.train(input_fn=input_fn, steps=1000)


INFO:tensorflow:Using default config.
WARNING:tensorflow:Using temporary folder as model directory: /var/folders/1d/mh9ycjyn2hb79y3bsv3nl51c5pk17s/T/tmpyt42ub5v
INFO:tensorflow:Using config: {'_tf_random_seed': 1, '_save_checkpoints_steps': None, '_save_summary_steps': 100, '_model_dir': '/var/folders/1d/mh9ycjyn2hb79y3bsv3nl51c5pk17s/T/tmpyt42ub5v', '_log_step_count_steps': 100, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_save_checkpoints_secs': 600, '_session_config': None}
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Saving checkpoints for 1 into /var/folders/1d/mh9ycjyn2hb79y3bsv3nl51c5pk17s/T/tmpyt42ub5v/model.ckpt.
INFO:tensorflow:step = 1, loss = 10.0
INFO:tensorflow:global_step/sec: 1013.52
INFO:tensorflow:step = 101, loss = 0.0726838 (0.099 sec)
INFO:tensorflow:global_step/sec: 1145.16
INFO:tensorflow:step = 201, loss = 0.0174702 (0.087 sec)
INFO:tensorflow:global_step/sec: 1191.22
INFO:tensorflow:step = 301, loss = 0.00818976 (0.084 sec)
INFO:tensorflow:global_step/sec: 1094.89
INFO:tensorflow:step = 401, loss = 0.00308124 (0.091 sec)
INFO:tensorflow:global_step/sec: 1164.69
INFO:tensorflow:step = 501, loss = 0.000234975 (0.086 sec)
INFO:tensorflow:global_step/sec: 1168.95
INFO:tensorflow:step = 601, loss = 4.16823e-05 (0.085 sec)
INFO:tensorflow:global_step/sec: 1209.92
INFO:tensorflow:step = 701, loss = 3.13177e-06 (0.083 sec)
INFO:tensorflow:global_step/sec: 1196.66
INFO:tensorflow:step = 801, loss = 9.52886e-07 (0.084 sec)
INFO:tensorflow:global_step/sec: 1215.57
INFO:tensorflow:step = 901, loss = 2.11235e-07 (0.083 sec)
INFO:tensorflow:Saving checkpoints for 1000 into /var/folders/1d/mh9ycjyn2hb79y3bsv3nl51c5pk17s/T/tmpyt42ub5v/model.ckpt.
INFO:tensorflow:Loss for final step: 1.9107e-08.
Out[41]:
<tensorflow.python.estimator.canned.linear.LinearRegressor at 0x11b7059b0>

In [42]:
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-09-29-02:44:36
INFO:tensorflow:Restoring parameters from /var/folders/1d/mh9ycjyn2hb79y3bsv3nl51c5pk17s/T/tmpyt42ub5v/model.ckpt-1000
INFO:tensorflow:Finished evaluation at 2017-09-29-02:44:37
INFO:tensorflow:Saving dict for global step 1000: average_loss = 9.44292e-09, global_step = 1000, loss = 3.77717e-08
INFO:tensorflow:Starting evaluation at 2017-09-29-02:44:38
INFO:tensorflow:Restoring parameters from /var/folders/1d/mh9ycjyn2hb79y3bsv3nl51c5pk17s/T/tmpyt42ub5v/model.ckpt-1000
INFO:tensorflow:Finished evaluation at 2017-09-29-02:44:39
INFO:tensorflow:Saving dict for global step 1000: average_loss = 0.0025331, global_step = 1000, loss = 0.0101324
train metrics: {'global_step': 1000, 'loss': 3.7771681e-08, 'average_loss': 9.4429202e-09}
eval metrics: {'global_step': 1000, 'loss': 0.01013242, 'average_loss': 0.002533105}

In [ ]: