tensorflow入门笔记(1)

1. tensorflow中最基本的三个概念

计算图(tf.Graph) 、张量( tf.Tensor) 、会话 ( tf.session)

计算图

计算图的每一个节点都是一个运算,计算图的边则表示了运算之间的传递关系。

张量

张量是一个多维数组,主要保存三个属性:名字、维度、类型(类型一旦定义不能改变)。
在张量中并没有真正保存数字,它保存的是如何得到这些数字的计算过程。

a=tf.constant([1.0,2.0],name="a")

会话

通过会话来执行定义好的运算,会话拥有并管理Tensorflow程序运行时的所有资源。

#创建会话   
with tf.Session() as sess: 
#使用创建好的会话来计算结果
	sess.run(...)

利用Tensorflow实现一个完整的神经网络




> import tensorflow as tf from numpy.random import RandomState
> 
> batch_size=8
> 
> w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
> w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))
> 
> x=tf.placeholder(tf.float32,shape=(None,2),name='x-input')
> y_=tf.placeholder(tf.float32,shape=(None,1),name='y-input')
> 
> a=tf.matmul(x,w1) y=tf.matmul(a,w2)
> 
> cross_entropy=-tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,1e-10,1.0)))
> train_step=tf.train.AdamOptimizer(0.001).minimize(cross_entropy)
> 
> rdm=RandomState(1) dataset_size=128 X=rdm.rand(dataset_size,2)
> Y=[[int(x1+x2<1)]for(x1,x2)in X]
> 
> with tf.Session() as sess:
>     init_op=tf.initialize_all_variables()
>     sess.run(init_op)
>     print (sess.run(w1))
>     print (sess.run(w2))
> 
>     STEPS=5000
>     for i in range(STEPS):
>         start=(i*batch_size)%dataset_size
>         end=min(start+batch_size,dataset_size)
> 
>         sess.run(train_step,feed_dict={x:X[start:end],y_:Y[start:end]})
>         if i%1000==0:
>             total_cross_entropy=sess.run(cross_entropy,feed_dict={x:X,y_:Y})
>             print("After%d training step(s),cross entropy on all data is %g"%(i,total_cross_entropy))
> 
>     print (sess.run(w1))
>     print (sess.run(w2))

训练之前神经网络的参数在这里插入图片描述在这里插入图片描述在这里插入图训练之后神经网络的参数片描述
注意:
(1)python版本不同语法可能有会微小的差异。
print sess.run(w1) / print (sess.run(w1))
(2)“ tab” 键和空格不能混用。

===============================================================================================

乱七八糟:

全连接:相邻两层之间任意两个节点之间都有连接

向前传播算法可以表示为矩阵乘法
a=tf.matmul(x,w1)
y=tf.matmul(a,w2)

设置神经网络参数的过程就是神经网络的训练过程

通过前向传播算法得到神经网络的预测结果,基于预测值和真实值之间的差距反向传播算法会更新神经网络参数。

===============================================================================================

深层神经网络

深度学习:多层和非线性
线性模型的局限性:现实中,绝大部分问题是无法线性分割的。

激活函数(非线性)

激活函数可以实现去线性化

a=tf.nn.relu(tf.matmul(x,w1)+biases1)
y=tf.nn.relu(tf.matmul(a,w2)+biases2)

常见的非线性激活函数:

多层网络解决异或问题

异或运算:
同时为正或者同时为负====》0
否则(一个正一个负)====》1

损失函数

神经网络模型效果以及优化的目标是通过损失函数来定义的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值