从今天开始,开始学习tensorflow。至于原因么emmmm,我最开始学python是用来写爬虫的,然后开始自己爬一些大型的数据,存到数据库中,emmm然后我发现这就完了啊。有的用户信息我爬下来还能用Matplotlib做一些可视化看看,还有好多其他数据都浪费掉了。所以去学一些机器学习的知识让这些数据能够利用起来把。
写这个笔记也算是能督促我一下吧,还真不清楚能不能一口气学下去,(爬虫就断了几个月哈哈哈),这算是我的个人日记吧。也算是练练文笔。练练自己的耐心。每天把自己的学习笔记以及出现的问题总结一下把。刚开始也有一些懵,毕竟新手慢慢来吧。
在学习tensorflow之前把吴恩达的机器学习那些理论课程看完了,所以有一些理论基础。
今天的笔记:
1 .TensorFlow中的所有计算都会转化为计算图的节点
2.Tensor的意思是张量的意思。大致就可以理解为多维数组
3.Flow是流的意思
4.tensorflow中的每一个计算都是计算图上的一个节点,节点之间的边描述了计算之间的依赖关系
5.计算图的使用
6.可以定义不同的计算图来分别进行计算,类比matplotlib中的figure()
7.张量的概念,张量可以理解为一个多维数组其中
a.零阶张量 表示一个标量(scalar)也就是一个数
b.一阶张量 表示一个向量(vector)一维数组
c.n阶张量 表示N维向量
8.输出的张量的属性主要有三个 name ,shape 以及 type
<bound method Tensor.eval of <tf.Tensor 'Add_29:0' shape=(2,) dtype=int32>>
意思是这个张量是 Add_29节点的第一个输出(坐标从0开始)
shape(2,)说明是是一个一维数组,表示长度为2
dtype表示的张量的类型
9.开始实现要给神经网络
10.神经网络的结构:目前主流的神经网络都是分层的结构,第一层是输入层(主要是包括特征向量每一个特征的取值)
输入层和输出层之间有一个隐藏层,一般神经网络的深度适合隐藏层相关的,隐藏层越深,那么这个伸进网络越深。
还有一层是输出层,输出层的结构不一,看属于哪类问题
11.一些专有名词learning rate(学习率,和梯度下降方法有关) activation function(激活函数) regularization(正则化) bias(偏置)
12.神经网络解决分类问题主要有一下4个步骤:
a.提取问题中实体的特征向量作为神经网络的输入
b.定义神经网络的结构,并定义如何从神经网络中得到输出(这个过程就是神经网络的向前传播算法)
c.通过孙连数据来调整神经网络参数的取值,训练神经网络
d.使用训练好的神经网络来预测位置的数据
13.向前传播算法:
了解神经元的结构,如图01-1所示,一个神经元有多个输入和一个输出
一个简单的 零件的神经网络示意图 如果01-2所示
通过简单代码实现就是 a = tf.matmlu(x,w1) 其中a表示隐藏层,x表示输入层,w1表示输入层与隐藏层每条边的权重
通过简单代码实现就是 y = tf.matmlu(a,w2)其中y表示输出层,a表示隐藏层,w2表示输出层与隐藏层每条边的权重
14.在神经网络中,偏置项(bias)通常会使用常熟来设置初始值.
biases = tf.Variable(tf.zeros([3]))
15.在神经网络优化算法中,最常用的方法是反向传播算法。如图01-3所示
16.在得到一个batch的前向传播之后,需要定义一个损失函数来刻画当前的预测值和真是答案之间的差距
cross_entropy = -tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,le-10,1.0)))
learning_rate = 0.001
train_step = tf.train.AdamOptimizer(learning_rate).minimize(cross_entropy)
在上面的代码中,cross_entropy定义了真实值和预测值的交叉熵,这是分类问题中一个常用的损失函数。
在train_step定义了反向传播的优化方法,目前tensorflow中有7种不同的优化器,比较常用的三个:
tf.train.GradientDescentOptimizer,tf.train.AdamOptimizer和tf.train.MomentumOptimizer
17.训练神经网络的过程可以分成以下3个步骤:
1.定义神经网络的结构和前向输出的结果
2.定义损失函数以及选择反向传播优化的算法。
3.生成会话,并且在顺联数据上反复运行反向传播算法。
总结:今天主要是开始了解一下tensorflow怎么运行吧,以及里面变量啥的怎么玩,发现做机器学习还是很方便的。今天主要遇到的问题就是老是忘记变量的初始化。然后今天照着例子做了一个完整的神经网络的样例,通过这个样例对与整个神经网络有了一个基本了解,还要继续努力。