莫烦机器学习笔记【一】_(:з」∠)_

感觉要看好久才能看完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



猜你喜欢

转载自blog.csdn.net/qq_22527013/article/details/80692928
今日推荐