感觉要看好久才能看完Orz 学渣的生活实在是太难过了
2018.6.14
一、安装TensorFlow
python3.6.5 直接pip install tensorflow √
二、例子1 y = 0.1x + 0.3
#create data
import tensorflow as tf
import numpy as np
x_data = np.random.ran(100).astype(np.float32) #生成100个32位的浮点数
#create TensorFlow structure start
Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0)) #W大写表示可能会为矩阵 设置为Variable类型 用随机数的方式生成 1维的结构,随机数列生成的范围为,-1到1
biases = tf.Variable(tf.zeros([1]))
y = Weights*x_data + biases
loss = tf.reduce_mean(tf.square(y-y_data)) #计算预测的y与实际的y的差别
optimizer = tf.train.GradientDescentOptimizer(0.5) #建立优化器/梯度下降 学习率0.5
train = optimizer.minimize(loss) #用优化器来减少误差
init = tf.initialize_all_variables() #初始化变量
#create TensorFlow structure end
sess = tf.Session()
sess.run(init) #像指针指向要处理的地方 指向之前的init 激活神经网络结构
for step in range(201): #训练201步
sess.run(train) #训练
if step % 20 == 0: #每20步打印一次权值
print(step,sess.run(Weights),sess.run(biases))
二、Session 会话控制
import tensorflow as tf
#建立两个矩阵 输出两个矩阵相乘的结果
matrix1 = tf.constant([[3,3]])
matrix2 = tf.constant([[2],[2]])
product = tf.matmul(matrix1,matrix2) #矩阵相乘 numpy中np.dot(m1,m2)
#方法1
sess = tf.Session()
result = sess.run(product) #每run一下 执行一下结构
print(result)
session.close()
#方法2
with tf.Session() as sess: #以sess来命名打开的session 运行到最后自动close
result2 = sess.run(product)
print(result2)
三、变量
import tensorflow as tf
state = tf.Variable(0,name='counter') #给变量命名
#print(state.name)
one = tf.constant(1)
new_value = tf.add(state,one)
update = tf.assign(state,new_value) #更新new_value到state上
init = tf.initialize_all_variables() #如果有定义变量 必须初始化所有的变量 sess.run()才能激活所有变量
with tf.Session() as sess:
sess.run(init) #初始化变量
for _ in range(3):
sess.run(update)
print(sess.run(state))
四、placehoder 传入值
session.run时从外界传入
想要在运行session.run()时再传值
import tensorflow as tf
input1 = tf.placeholder(tf.float32) #给定palceholder的类型 可在后面规定结构
input2 = tf.placeholder(tf.float32)
output = tf.mul(imput1,input2) #tf.mul()方法在新版本中已经移除 使用tf.multiply()代替
with tf.Session() as sess:
print(sess.run(output,feed_dict={input1:[7.],input2:[2.]})) #此时传入input1和input2的值
五、激励函数
让某一部分的神经元先激活起来,把信息传递到之后的层
为了解决不能用线性方程解决的问题
y = W * x → y = AF( W * x ) AF→激励函数 另一个非线性方程
1. hidden layers 比较少时
可多种尝试 卷积→relu 循环→relu or tanh
2.hidden layers 比较多时
hidden layer:将上一层传递来的信息进行处理 并且用激励函数决定要激励哪些
六、添加/定义一个神经层
weights biases 怎么合并计算 激励函数
import tensorflow as tf
def add_layer(inputs,in_size,out_size,activation_function=None): #要添加的功能 None时为线性函数
Weights = tf.Variable(tf.random_normal([in_size,out_size])) #定义矩阵 大写开头/ 随机变量要比全部为0好很多
biases = tf.Variable(tf.zeros([1,out_size])+0.1) #定义biases 类似列表的东西/初始值推荐不为0
Wx_plus_b = tf.matmul(inputs,Weights) + biases #定义操作 预测出来的值 还未使用激活函数
if activation_function is None:
output = Wx_plus_b
else:
output = activation_funcion(Wx_plus_b)
return outputs