文章目录

  • tensorflow整体理解
    • tensorflow框架
    • tensorflow训练
  • tensorflow基本操作对象
    • 常量:就是已经确定的对象
    • 可训练变量:就是需要训练的变量对象
    • 不可可训练变量:就是不需要训练的变量对象,GAN里有用
    • 变化的常量:分批训练,miniBatch是常量,但是它是需要变化的,可以成为块变量,使用“占位符”更能代表他的含义。
    • 训练操作工具:session()
  • tensorflow实现SVM:

tensorflow整体理解

tensorflow框架

我们应该了解深度学习的大概框架,forward pass 计算预测值,backward pass计算误差,误差引导参数更新,重复上述操作。
tensorflow它是专门针对深度学习开发的,它是先把网络搭建起来,一层一层把网络搭建起来,前向传播把网络堆砌好之后,这个网络还包含了对反向误差的处理,反向误差在这个网络里面已经内建好了,我们只需要告诉网络采取什么方法和以什么为目标来反向传播,这个就是build graph的过程,我们连如何更新参数都不需要关心,tensorflow全帮你做了。
再次所以一遍你在tensorflow需要做什么:前向传播把网络堆砌好,告诉网络采取什么方法和以什么为目标来反向传播。对,你只需要堆积木。

tensorflow训练

网络搭建好之后,那就是训练了。想象以下已经给你一台机器了,你作为一个工人你所要做的就是放数据和看结果,在tensorflow里不能直接看,需要使用session这个工具去放数据去看结果。

tensorflow基本操作对象

tensorflow操作对象都是tensor,所以我们需要把所有需要用到的变量转为tensorflow识别的tensor

常量:就是已经确定的对象

# define constant for GPU compute as tf.float32
x = tf.constant(1,dtype= tf.float32)

可训练变量:就是需要训练的变量对象

# define a trainable varible
y = tf.Variable(2,dtype=tf.float32)

不可可训练变量:就是不需要训练的变量对象,GAN里有用

# define a untrainable varible
z = tf.Variable(3,dtype=tf.float32,trainable=False)

变化的常量:分批训练,miniBatch是常量,但是它是需要变化的,可以成为块变量,使用“占位符”更能代表他的含义。

# 定义一个数据类型为 tf.float32、“长”未知、“宽”为 2 的矩阵 Placeholder
x = tf.placeholder(tf.float32, [None, 2])

训练操作工具:session()

# 定义一个数据类型为 tf.float32、“长”未知、“宽”为 2 的矩阵 Placeholder
x = tf.placeholder(tf.float32, [None, 2])
# 定义一个 numpy 数组:[ [ 1 2 ], [ 3 4 ], [ 5 6 ] ]
x_data = np.array([[1, 2], [3, 4], [5, 6]])
# 定义 x + 1 对应的 Tensor
z = x + 1
# 利用 Session 及其 feed_dict 参数、将 y 的值赋予给 x、同时输出 z 的值
print(tf.Session().run(z, feed_dict={x: x_data}))   # 将会输出 [ [ 2 3 ], [ 4 5 ], [ 6 7 ] 

tensorflow实现SVM:

#%%
# =============================================================================
# 1. build graph: variables and operations(forward pass and backword pass)
# 2. train : feed data and train it
# =============================================================================class TFLinearSVM(ClassifierBase):def __init__(self):super(TFLinearSVM, self).__init__()self._w = Noneself._b = None# 使用 self._sess 属性来存储一个 Session 以方便调用self._sess = tf.Session()def fit(self, x, y, sample_weight=None, lr=0.001, epoch=10**4, tol=1e-3):# 将 sample_weight(样本权重)转换为 constant Tensorif sample_weight is None:sample_weight = tf.constant(np.ones(len(y)), dtype=tf.float32, name="sample_weight")else:sample_weight = tf.constant(np.array(sample_weight)*len(y), dtype=tf.float32, name="sample_weight")# 将输入数据转换为 constant Tensorx, y = tf.constant(x, dtype=tf.float32), tf.constant(y, dtype=tf.float32)# 将需要训练的 w、b 定义为可训练 Variableself._w = tf.Variable(np.zeros(x.shape[1]), dtype=tf.float32, name="w")self._b = tf.Variable(0., dtype=tf.float32, name="b")# 调用相应方法获得当前模型预测值y_pred = self.predict(x, True, False)# 利用相应函数计算出总损失:# cost = ∑_(i=1)^N max⁡(1-y_i⋅(w⋅x_i+b),0)+ 0.5 * ‖w‖^2cost = tf.reduce_sum(tf.maximum(1-y*y_pred,0)*sample_weight) + tf.nn.l2_loss(self._w)# 利用 Tensorflow 封装好的优化器定义“更新参数”步骤# 该步骤会调用相应算法、以减少上述总损失为目的来进行参数的更新        train_step = tf.train.AdamOptimizer(learning_rate=lr).minimize(cost)# self._sess.run(tf.global_variables_initializer())#for _ in range(epoch):if self._sess.run([cost, train_step])[0] <0:breakdef predict(self, x, get_raw_results=False, out_of_sess = True):# 利用 reduce_sum 方法算出预测向量rs = tf.reduce_sum(self._w * x, axis=1) + self._bif not get_raw_results:rs = tf.sign(rs)# 如果 out_of_sess 参数为 True、就要利用 Session 把具体数值算出来   if out_of_sess:rs = self._sess.run(rs)return rs

深度学习:tensorflow的简单用法,tensorflow实现SVM相关推荐

  1. 作为深度学习最强框架的TensorFlow如何进行时序预测!(转)

    作为深度学习最强框架的TensorFlow如何进行时序预测! BigQuant 2 个月前 摘要: 2017年深度学习框架关注度排名tensorflow以绝对的优势占领榜首,本文通过一个小例子介绍了T ...

  2. 12大深度学习开源框架(caffe,tensorflow,pytorch,mxnet等)汇总详解

    这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpeng2008/yousa ...

  3. 深度学习框架比较(Caffe, TensorFlow, MXNet, Torch, Theano)

    在这里,我将会介绍当前比较主流的5种深度学习框架,包括 Caffe, TensorFlow, MXNet, Torch, Theano,并对这些框架进行分析. 首先对这些框架进行总览. 库名称 开发语 ...

  4. Karpathy更新深度学习开源框架排名:TensorFlow第一,PyTorch第二

    上周,Keras作者.谷歌研究科学家François Chollet晒出一张图,他使用Google Search Index,展示了过去三个月,ArXiv上提到的深度学习框架排行,新智元也做了报道: ...

  5. 手把手教你在Windows10环境下安装深度学习框架(pytorch or tensorflow)

    手把手教你在Windows10环境下安装深度学习框架(pytorch or tensorflow) 1. 安装Anaconda:(常用的python版本和各类包管理器) 1.1. 下载地址: 1.2. ...

  6. 李沐《动手学深度学习》新增PyTorch和TensorFlow实现,还有中文版

    李沐老师的<动手学深度学习>已经有Pytorch和TensorFlow的实现了,并且有了中文版. 网址:http://d2l.ai/ 简介 李沐老师的<动手学深度学习>自一年前 ...

  7. 《深度学习案例精粹:基于TensorFlow与Keras》深度学习常用训练案例合集

    #好书推荐##好书奇遇季#<深度学习案例精粹:基于TensorFlow与Keras>,京东当当天猫都有发售.本书配套示例源码.PPT课件.思维导图.数据集.开发环境与答疑服务. <深 ...

  8. [深度学习概念]·深度学习进行语音识别-简单语音处理

    深度学习进行语音识别-简单语音处理 吴恩达教授曾经预言过,当语音识别的准确度从95%提升到99%的时候,它将成为与电脑交互的首要方式. 下面就让我们来学习与深度学习进行语音室识别吧! 机器学习并不总是 ...

  9. 笔记:深度学习与有向无环图SVM结合用于年龄估计的局部调整

    阅读论文:Combined Deep Learning With Directed Acyclic Graph SVM for Local Adjustment of Age Estimation | ...

最新文章

  1. ORA-04031 错误
  2. Django ORM 中的批量操作
  3. php 函数传值_传址_函数参数,php函数的传值与传址(引用)详解
  4. CVPR 2021|可操控的GAN——Hijack-GAN
  5. react map循环生成的button_关于Vue和React的一些对比及个人思考(中)
  6. 五子棋java百度贴吧_五子棋单机版
  7. mybatis_SQL映射(2)
  8. 超级备份还原v2.3.05_新手如何一键还原电脑系统(图文教程)
  9. NoteBurner Spotify教程:在Mac上将 Spotify 音乐转换为 MP3 格式
  10. cannot import name ‘Imputer‘ from ‘sklearn.preprocessing‘
  11. 「经典题」完整的前端项目开发流程
  12. Windows把内存设置为0无法开机怎么办
  13. 软件测试面试题:什么是Ramp up?你如何设置?
  14. 汉能薄膜太阳能技术将国家电投大楼变身节能光伏建筑
  15. 【西语】【2】Recuërdame antes de que se desaparezca la memoria del amor 在爱的记忆消失前,请记住我
  16. 基于jira的缺陷自动化报表分析 (四)按人员统计缺陷情况
  17. 关于Java,你想知道的一切,这里说透了
  18. java utf 8_java utf-8 乱码的解决方法
  19. python 保存网页为html_如何使用Python保存“完整网页”而不仅仅是基本的html
  20. 医院常见的信息化系统

热门文章

  1. General error: 24374 OCIStmtFetch: ORA-24374: define not done before fetch or execute and fetch
  2. word2003如何设置护眼模式_连锁企业如何设置「单店盈利模式」?
  3. 运动会成绩管理java代码_基于jsp的运动会成绩管理-JavaEE实现运动会成绩管理 - java项目源码...
  4. Linux多个端口组合,iptables使用multiport 添加多个不连续端口
  5. 计算机处理器采用多核,电脑的CPU的多核很有用吗?
  6. python编程神器下载_Python编程神器 -程序员必备开发手册
  7. python leetcode_七十五、Python | Leetcode哈希表系列
  8. java中构造器快捷方式_java 构造器 (构造方法)
  9. jmeter对乱码如何处理_JMeter中文乱码的解决
  10. Apache Flink 零基础入门(一):基础概念解析