作为TensorFlow的小白,还有很多东西要学的。
(1) node
node1 = tf.constant(3.0, tf.float32)
node2 = tf.constant(4.0) # also tf.float32 implicitly
print(node1, node2)
To actuallyevaluate the nodes, we must run the computational graph within a session.
sess = tf.Session() print(sess.run([node1, node2]))
[3.0,4.0]
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
(2) to accept externalinputs, known as placeholders.
a = tf.placeholder(tf.float32) b = tf.placeholder(tf.float32) adder_node = a + b # + provides a shortcut for tf.add(a, b)
tospecify Tensors that provide concrete values to these placeholders:
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.]
add_and_triple = adder_node *3. print(sess.run(add_and_triple,{a:3, b:4.5}))
(3) Variables
W = tf.Variable([.3], tf.float32) b = tf.Variable([-.3], tf.float32) x = tf.placeholder(tf.float32) linear_model = W * x + b
Toinitialize all the variables in a TensorFlow program, you must explicitly calla special operation as follows:
init = tf.global_variables_initializer() sess.run(init)
print(sess.run(linear_model,{x:[1,2,3,4]}))
[0. 0.30000001 0.60000002 0.90000004]
(4) loss function
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]}))
(5) improve w,b
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]}))
loss结果为:
0.0
(6)TensorFlow provides optimizers that slowly change each variable inorder to minimize the loss function. The simplest optimizer is gradientdescent.
optimizer = tf.train.GradientDescentOptimizer(0.01) train = optimizer.minimize(loss)
sess.run(init)# reset values to incorrect defaults. 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)]
总结 node,placeholder