一、tensorflow安装
1.python3.5较好
2.命令
cd tensorflow/bin/.activity //每次都需要激活虚拟环境
deactivity //退出虚拟环境
touch/vim/python3 test.py
ctrl+z //退出
二、基本操作
1. 数据中心的基本单位 Tensors,0维tensor,例:3,一维tensor,例:[1,2,3],二维tensor,例:[[1,2],[3,4]],三维。。
2. import tensorflow as tf //python可以访问所有的tensorflow类,函数,符号
import numpty as np //数据的操纵与预处理
3. 计算图
3.1 计算图是由一系列的作用在节点上的运算构成
节点是0个或多个tensor输入,但只有一个tensor输出的单元
3.2 节点
常量节点
node1 = tf.constant(3.0, dtype=tf.float32)
node2 = tf.constant(4.0,dtype=tf.float32) #常量节点定义的时候就会初始化
变量节点
W = tf.Variable([.3], dtype=tf.float32)
b = tf.Variable([-.3], dtype=tf.float32) #变量节点,定义的时候不会初始化,只有执行初始化函数才会初始化
占位节点
a = tf.placeholder(tf.float32) //placeholder承诺随后提供一个值
运算节点
from __future__ import print_function
node3 = tf.add(node1, node2)
3.2 运算
输出
sess = tf.Session()
print(sess.run([node1, node2]))
#输出是2个值,则需要加中括号,如果是函数,韩式的占位节点需要加字典初始化
变量节点初始化
init = tf.global_variables_initializer()
sess.run(init)
变量节点初始值修改
fixW = tf.assign(W, [-1.])
fixb = tf.assign(b, [1.])
sess.run([fixW,fixb]) #使得修改成功
加
from __future__ import print_function
node3 = tf.add(node1, node2)
函数
a = tf.placeholder(tf.float32) //placeholder承诺随后提供一个值
b = tf.placeholder(tf.float32)
adder_node = a + b
add_and_triple = adder_node * 3.
print(sess.run(adder_node, {a: [1, 3], b: [2, 4]}))
三、运用基本操作实现机器学习
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)
y=tf.placeholder(tf.float32)
#model
liner_model=w*x+b
#loss
loss=tf.reduce_sum(tf.square(liner_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
cur_a,cur_b,cur_loss=sess.run([w,b,loss],{x:x_train,y:y_train})
print(cur_a,cur_b,cur_loss)
四、运用库函数estimator调用实现机器学习
#!usr/bin/evn python3
#-*- coding:utf-8 -*-
#tensorflow可以调用其类,函数,标示
import tensorflow as tf
#numpy可以进行操纵数据和对数据进行预处理
import numpy as np
#the list of feature
feature_columns=[tf.feature_column.numeric_column("x",shape=[1])]
#estimator是一个训练和评估的接口
estimator=tf.estimator.LinearRegressor(feature_columns=feature_columns)
x_train=np.array([1,2,3,4])
y_train=np.array([0,-1,-2,-3])
input_fn=tf.estimator.inputs.numpy_input_fn({"x":x_train},y_train,batch_size=4,num_epochs=None,shuffle=False)
estimator.train(input_fn=input_fn, steps=1000)
#evaluate
x_eval=np.array([2,5,8,1])
y_eval=np.array([-1.01,-4.1,-7,0])
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)
train_metrics=estimator.evaluate(input_fn=train_input_fn)
eval_metrics=estimator.evaluate(input_fn=eval_input_fn)
print(train_metrics,eval_metrics)
五、库函数和编写结合
import numpy as np
import tensorflow as tf
def model_fn(features, labels, mode):
W = tf.get_variable("W", [1], dtype=tf.float64)
b = tf.get_variable("b", [1], dtype=tf.float64)
y = W*features['x'] + b
loss = tf.reduce_sum(tf.square(y - labels))
global_step = tf.train.get_global_step()
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = tf.group(optimizer.minimize(loss),tf.assign_add(global_step, 1))
return tf.estimator.EstimatorSpec(
mode=mode,
predictions=y,
loss=loss,
train_op=train)
estimator = tf.estimator.Estimator(model_fn=model_fn)
# define our data sets
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)
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)