目录

介绍

背景

向量作为数字列表

使用NumPy库

使用TensorFlow

使用代码

总结


介绍

在机器学习中,向量可以用作表示数字数据的好方法。使用向量时,我们可以满足以下基本操作:

  • 添加两个向量
  • 减去两个向量
  • 多个带有标量的向量(即数字)
  • 规范(即向量的大小或长度)
  • 两个向量的点积

在本文中,我将通过三种方法介绍向量对象的基本操作:

  • 最简单的方法是将向量表示为Python中的数字列表
  • 第二种方法是在Python中使用Numpy库
  • 最后一种方法是使用TensorFlow

背景

向量作为数字列表

在这种方法中,我们将向量表示为Python中的数字列表。例如,我们可以创建两个向量(v和w)作为两个数字列表:

v = [1,2]

w = [2,3]

可以将两个向量加在一起以形成新的向量。添加v和w的结果:

v + w =​​ [3,5]

在Python中,我们可以使用zip方法添加两个向量:

def vector_add(v, w):"""adds corresponding elements"""return [v_i + w_ifor v_i, w_i in zip(v, w)]

同样,可以将两个向量相减,形成一个新向量:

v - w = [-1,-1]

在Python中:

def vector_subtract(v, w):"""subtracts corresponding elements"""return [v_i - w_ifor v_i, w_i in zip(v, w)]

向量也可以与标量相乘以形成新的向量,例如:

3 * v = [3,6]

在Python中:

def scalar_multiply(c, v):"""c is a number, v is a vector"""return [c * v_i for v_i in v]

两个向量的点积是它们的分量产物的总和。v和w的点积:

vw = 1 * 2 + 2 * 3 = 8

在Python中:

def dot(v, w):"""v_1 * w_1 + ... + v_n * w_n"""return sum(v_i * w_ifor v_i, w_i in zip(v, w))

使用上面的dot函数,我们可以用它来计算向量的大小(或长度)。大小也称为向量的范数。以下函数(名为norm)计算向量的范数:

import mathdef norm(v):return math.sqrt(dot(v,v))

使用NumPy

另一种方法是使用NumPy库,其中包含许多支持向量基本操作的函数。如果我们将向量创建为数字列表,但我们必须将它们转换为数组,因为NumPy的函数仅适用于数组对象。

在使用NumPy库之前,我们必须:

import numpy as np

类似的功能vector_addvector_subtractscalar_multiplydotnorm可以重新写成如下代码:

def vector_add(v, w):"""adds corresponding elements"""return np.array(v) + np.array(w)def vector_subtract(v, w):"""subtracts corresponding elements"""return np.array(v) - np.array(w)def scalar_multiply(c, v):"""c is a number, v is a vector"""return c*np.array(v)def dot(v, w):"""v_1 * w_1 + ... + v_n * w_n"""return np.dot(np.array(v),np.array(w))def norm(v):return np.linalg.norm(np.array(v))

使用TensorFlow

TensorFlow是一个开源库,由Google Brain团队开发,并于2015年11月发布。在使用TensorFlow之前,我们需要了解以下基本概念:

  • 图表:学习过程的布局,不包括数据
  • 数据:用于训练的示例,它有两种输入和目标
  • 会话:我们向图表提供数据或会话=图表+数据。我们可以通过使用占位符来实现这一点——在介绍示例的地方使用门(gates)。

可以使用TensorFlow库中的函数实现对向量的操作:

# creating the Graphvec_1 = tf.placeholder(tf.float32)vec_2 = tf.placeholder(tf.float32)scalar = tf.placeholder(tf.float32)vector_add = tf.add(vec_1,vec_2)vector_subtract = tf.subtract(vec_1,vec_2)scalar_multiply = tf.multiply(scalar,vec_1)norm = tf.norm(vec_1)dot = tf.tensordot(vec_1, vec_2, 1)

我们可以通过会话向图表提供数据:

#############DATAv = [1,2]w = [2,3]c = 3##########SESSIONwith tf.Session() as sess:result_add = sess.run(vector_add, feed_dict={vec_1:v,vec_2:w})result_sub = sess.run(vector_subtract, feed_dict={vec_1:v,vec_2:w})result_mul = sess.run(scalar_multiply, feed_dict={scalar:c,vec_1:v})result_norm = sess.run(norm , feed_dict={vec_1:v})result_dot = sess.run(dot, feed_dict={vec_1:v,vec_2:w})

使用代码

要测试第一种方法,我们可以创建一个名为vectors_lists.py的文件:

import math#########VECTORS AS LISTS##########def vector_add(v, w):"""adds corresponding elements"""return [v_i + w_ifor v_i, w_i in zip(v, w)]def vector_subtract(v, w):"""subtracts corresponding elements"""return [v_i - w_ifor v_i, w_i in zip(v, w)]def scalar_multiply(c, v):"""c is a number, v is a vector"""return [c * v_i for v_i in v]def dot(v, w):"""v_1 * w_1 + ... + v_n * w_n"""return sum(v_i * w_ifor v_i, w_i in zip(v, w))def norm(v):return math.sqrt(dot(v,v))##########DATA#############v = [1,2]w = [2,3]scalar = 3#########OUTPUT##########print(vector_add(v,w))print(vector_subtract(v,w))print(scalar_multiply(scalar,v))print(norm(v))print(dot(v,w))

如果运行此文件,结果可能如下所示:

[3, 5][-1, -1][3, 6]2.236067977499798

要测试第二种方法,我们可以创建一个名为vectors_numpy.py的文件:

import numpy as np#########VECTORS AND NUMPY##########def vector_add(v, w):"""adds corresponding elements"""return np.array(v) + np.array(w)def vector_subtract(v, w):"""subtracts corresponding elements"""return np.array(v) - np.array(w)def scalar_multiply(c, v):"""c is a number, v is a vector"""return c*np.array(v)def dot(v, w):"""v_1 * w_1 + ... + v_n * w_n"""return np.dot(np.array(v),np.array(w))def norm(v):return np.linalg.norm(np.array(v))##########DATA#############v = [1,2]w = [2,3]scalar = 3#########DISPLAY VECTORS ##########print(vector_add(v,w).tolist())print(vector_subtract(v,w).tolist())print(scalar_multiply(scalar,v).tolist())print(norm(v))print(dot(v,w))

结果如下:

[3, 5][-1, -1][3, 6]2.236067977499798

为了测试最后一种方法,我们可以创建一个名为vectors_tensorflow.py的文件:

import tensorflow as tf############GRAPHvec_1 = tf.placeholder(tf.float32)vec_2 = tf.placeholder(tf.float32)scalar = tf.placeholder(tf.float32)vector_add = tf.add(vec_1,vec_2)vector_subtract = tf.subtract(vec_1,vec_2)scalar_multiply = tf.multiply(scalar,vec_1)norm = tf.norm(vec_1)dot = tf.tensordot(vec_1, vec_2, 1)#############DATAv = [1,2]w = [2,3]c = 3##########SESSIONwith tf.Session() as sess:result_add = sess.run(vector_add, feed_dict={vec_1:v,vec_2:w})result_sub = sess.run(vector_subtract, feed_dict={vec_1:v,vec_2:w})result_mul = sess.run(scalar_multiply, feed_dict={scalar:c,vec_1:v})result_norm = sess.run(norm , feed_dict={vec_1:v})result_dot = sess.run(dot, feed_dict={vec_1:v,vec_2:w})###########OUTPUTprint(result_add.tolist())print(result_sub.tolist())print(result_mul.tolist())print(result_norm)print(result_dot)

结果:

[3.0, 5.0][-1.0, -1.0][3.0, 6.0]2.2360688.0

总结

从最简单的事情开始是学习TensorFlow的最佳方法之一。通过对向量对象使用不同的方法,我希望你(和我)——TensorFlow初学者——在将来用于更复杂的任务之前,将了解如何使用TensorFlow。

原文地址:https://www.codeproject.com/Articles/1274830/An-introduction-to-the-TensorFlow-Vector-objects

TensorFlow简介:向量对象相关推荐

  1. 深度学习及TensorFlow简介

    深度学习及TensorFlow简介 深度学习目前已经被应用到图像识别,语音识别,自然语言处理,机器翻译等场景并取得了很好的行业应用效果.至今已有数种深度学习框架,如TensorFlow.Caffe.T ...

  2. 《Web安全之机器学习入门》一 2.2 TensorFlow简介与环境搭建

    2.2 TensorFlow简介与环境搭建 TensorFlow是一个采用数据流图.用于数值计算的开源软件库(见图2-5).节点在图中表示数学操作,图中的线则表示在节点间相互联系的多维数据数组,即张量 ...

  3. 应用线性代数简介 - 向量,矩阵和最小二乘法 By Stephen Boyd and Lieven Vandenberghe

    Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares 应用线性代数简介 - 向量,矩阵和最小二乘法 ...

  4. MOOC网神经网络与深度学习TensorFlow实践1——TensorFlow简介、python语言基础

    TensorFlow简介 TensorFlow环境的安装和使用 使用清华镜像的提示更改conda python包源 创建新的虚拟环境,在环境的交互界面用pip安装各种包. python语言基础

  5. MOOC网TensoroFlow入门实操课程1——tensorflow简介、计算机视觉、卷积简介、人马分类识别

    课程地址:https://www.icourse163.org/learn/youdao-1460578162?tid=1461280442#/learn/content?type=detail&am ...

  6. TensorFlow中的对象检测教程:实时对象检测

    导言 创建能够在单个图像中识别和定位多个对象的精确机器学习模型仍然是计算机视觉中的核心挑战.但随着最近深度学习的进步,对象检测应用程序比以往更容易开发.TensorFlow的对象检测API是一个构建与 ...

  7. 【设计模式】享元模式 简介 ( 定义 | 对象池 | 内部状态 | 外部状态 | 适用场景 | 相关角色 )

    文章目录 I . 享元模式 简介 II . 享元模式 内部状态 和 外部状态 III . 享元模式 适用场景 IV . 享元模式 优缺点 V . 享元模式 相关模式 VI . 享元模式 相关角色 I ...

  8. 【NLP实战】tensorflow词向量训练实战

    实战是学习一门技术最好的方式,也是深入了解一门技术唯一的方式.因此,NLP专栏计划推出一个实战专栏,让有兴趣的同学在看文章之余也可以自己动手试一试. 本篇介绍自然语言处理中最基础的词向量的训练. 作者 ...

  9. 大对象简介+大对象的4种类型+lob类型的优点+lob的组成

    大对象简介 1用来存储大型数据,如图片,视频,音乐等 2可用于存储二进制数据,字符数据,引用外部文件的指针的数据类型 大对象的4种类型 1BLOB数据类型 1)它是用来存储二进制数据. 2)可以存储的 ...

最新文章

  1. iOS base64 MD5
  2. MathJax: 让前端支持数学公式
  3. rocketmq中的消息拉取及并发消费理解
  4. 什么是java双亲委派机制
  5. java linkedlist和arraylist添加元素时性能比较
  6. ubuntu下修改时区和时间
  7. 研究生学习阶段时间安排
  8. python文件传输模块_[宜配屋]听图阁 - python 使用poster模块进行http方式的文件传输到服务器的方法...
  9. js中使用slice进行补0日期和时间
  10. server2012 AD域 radius 802.1x认证
  11. 几种div/css布局的代码
  12. 如何解决MacOS无法登录app store的问题?
  13. STM32——库函数版——12864点阵显示屏驱动
  14. 拼多多业绩增长难继,品牌形象陷于信任危机
  15. 基因结构图的0_在线网站绘制基因结构图!
  16. Unittest-单元测试
  17. v-for报错Cannot use v-for on stateful component root element because it renders multiple elements.
  18. Xorg Drivers
  19. 软件工程知识点总结——第三、四部分
  20. 计算机视觉公司 摘过来,以后看看

热门文章

  1. 新春牛年迎春PSD分层模板!最全设计素材都在这了
  2. 国潮艺术插画设计没有灵感看这里
  3. 亚麻纤维截面形态_纺织品知识点--纺织纤维的分类get
  4. CUDA 开启GPU之间的P2P通信功能
  5. 异常和中断处理流程: Exception- or Interrupt-Handler Procedures
  6. 哈希函数(Hash Functions - 散列函数)的基本介绍(SHA-2,SHA-256,MD-5,Scrypt,BCrypt等)
  7. ATK - Accessibility Toolkit - 辅助功能工具包
  8. Python生态概览(一):数据分析库、数据可视化库、文本处理库、机器学习库、深度学习库
  9. mysql 错误 150_MySQL教程之error 150错误提示解决办法
  10. dsge模型难做吗_百度Seo优化好做吗,现在做是不是越来越难做?