**前言:**原本打算今天下午继续学习RetinaNet,但是种种原因打算暂时先把RetinaNet放一放,今天主要学习了Tensorflow框架,了解了其基本用法,以及如何运用Tensorflow编写一个手写数字识别网络。
一.Tensorflow介绍
1.什么是Tensorflow?
Tensorflow是一个开源的,基于python的机器学习框架,主要用于图形分类、音频处理、推荐系统和自然语言处理等。
2.基于Tensorflow的简单程序
import tensorflow as tf
message = tf.constant('Welcome to the world of tensorflow !')
with tf.session() as sess:
sess.run(message)
print(message.decode())
输出结果:Welcome to the world of tensorflow !
3.常量、变量、占位符
最基本的 TensorFlow 提供了一个库来定义和执行对张量的各种数学运算。张量,可理解为一个 n 维矩阵,所有类型的数据,包括标量、矢量和矩阵等都是特殊类型的张量。
**注:**所有常量、变量和占位符将在代码的计算图部分中定义。如果在定义部分使用 print 语句,只会得到有关张量类型的信息,而不是它的值。为了得到相关的值,需要创建会话图并对需要提取的张量显式使用运行命令,如下所示:
print(sess.run(t_1))
#Will print the value of t_1 defined in step 1
4.矩阵的运算
常用的一些矩阵定义: 一些有用的矩阵操作:
**注:**a.tf.div 返回的张量的类型与第一个参数类型一致。
b. 如果在整数张量之间进行除法,最好使用 tf.truediv(a,b),因为它首先将整数张量转换为浮点类,然后再执行按位相除。
5.回归算法
回归是指通过自变量与因变量之间的关系实现对数据的预测,可以有多个影响因变量的自变量。因此,回归主要有两个部分组成:自变量与因变量之间的关系,以及自变量对因变量产生的影响强度。
(1).线性回归
线性回归旨在找到预测值Y的线性方程,如下:
其中,X=(x1,x2,…,xn) 为 n 个输入变量,W=(w1,w2,…,wn) 为线性系数,b 是偏置项。目标是找到系数 W 的最佳估计,使得预测值 Y 的误差最小。使用最小二乘法估计线性系数 W,即使预测值 (Yhat) 与观测值 (Y) 之间的差的平方和最小。
损失函数为:
(2).逻辑回归
逻辑回归用来确定一个事件发生的概率。事件的概率用 logit 函数(Sigmoid 函数)表示:
现在的目标是估计权重 W=(w1,w2,…,wn) 和偏置项 b。在逻辑回归中,使用最大似然估计量或随机梯度下降来估计系数。损失函数通常被定义为交叉熵项:
二.总结
今天只是简单学习了Tensorflow框架,接下来还有很多相关方面的内容要学习。忙碌而充实的一周就过去了,感觉通过编写一周的博客,记录总结每天的学习内容,是一件很有意义的事情,最起码在一周结尾的时候回顾一周学习的内容,觉得没有虚度时光。只是本周唯一没有完成的事情是计划每两天读一篇论文,但是本周只读了两篇(只是没有想到英文版的论文读起来有些吃力),所以下周还会继续再接再厉,锻炼阅读英文论文的能力,争取每两天就能精读一篇论文。基础知识的学习也还会继续,但下周最重要的任务是了解和收集医学图像方面的科研信息,为first talk做准备,下周继续努力吧!