机器学习入门——线性代数简单回顾

2023-11-20

本节课程回顾了一些简单但常用的线性代数知识

很基础的,我会直接跳过,并对矩阵的一些运算进行编程实现。

3.1 矩阵的加法和标量乘法

矩阵加法:要求行列数要相等,然后,每个元素对应相加。

exp:

matrix addition


矩阵的标量乘法:每个元素都要乘
exp:

saclar multiplication


3.2 矩阵的向量乘法

矩阵的向量乘法,就是矩阵和向量相乘。要求:矩阵的列数要与向量的行数相等!

exp:

mat vect mul

如上例所示,2×3的矩阵乘以3×1的向量,得到2×1的向量。


3.3 矩阵的乘法

矩阵乘法:实际就是乘加运算,对应行和对应列的对应元素相乘后相加(如下图所示)。注意:矩阵乘法中,前一个矩阵的列数要与后一个矩阵的行数相等。

矩阵乘法运算过程:

matrix mul1



exp:



3.4 矩阵的转置和逆

矩阵的转置 定义矩阵A的转置:有这样一个矩阵B,满足B=a(j,i),即b(j,i)=a(i,j)(B的第i行第j个元素是A的第j行第i个元素),记作转置

exp:




矩阵的逆 如矩阵A是一个m×m矩阵(即方阵),如果有逆矩阵,则:



矩阵可逆的条件

矩阵A可逆,则A为方阵,且A的行列式值不为0。反过来同样成立!
方阵A的行列式如果为0,则为奇异方阵(singular)。

exp:

incerse1

显然,矩阵A与矩阵B相乘,结果为I(单位阵)。所以,A是B的逆阵,B也是A的逆阵。


3.5 编程实现矩阵基本运算

程序是使用Python2.7编写,基于tensorflow框架。

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Tue Jan 17 12:24:29 2017

@author: louishao
"""

import tensorflow as tf

#Matrix addition
mata = tf.constant([[1,2],[3,4],[5,6]])
matb = tf.constant([[5,3],[2,4],[6,7]])
matadd = tf.add(mata,matb)

#Scalar multiplication
cons = tf.constant(3)
mat1 = tf.constant([[1,2],[3,4],[5,6]])
scalmul = tf.mul(cons,mat1)

#Matrix vector multiplication
mat = tf.constant([[1,2,3],[4,5,6]])
vec = tf.constant([[1],[2],[3]])
matvecmul = tf.matmul(mat,vec)

#Matrix multiplication
m1 = tf.constant([[1,2],[2,3],[3,4]])
m2 = tf.constant([[2,1],[3,5]])
matmul = tf.matmul(m1,m2)

#Matrix transpose
mattt = tf.constant([[1,2],[3,4],[5,6]])
mattrans = tf.transpose(mattt)

#Matrix inverse
matt = tf.constant([[3.0,2.0,0.0],[2.0,1.0,2.0],[2.0,1.0,1.0]],'float32')
matinver = tf.matrix_inverse(matt)

with tf.Session() as sess:
    print "Matrix addition"
    print "the addition is \n%s"%(sess.run(matadd))
    print "---------------------------"
    print "Scalar multiplication"
    print "the scalar multiplication is \n%s"%(sess.run(scalmul))
    print "--------------------------"
    print "Matrix vector multiplication"
    print "the matrix vector multiplication is\n%s"%(sess.run(matvecmul))
    print "--------------------------"
    print "Matrix multiplication"
    print "the matrix multiplication is\n %s"%(sess.run(matmul))
    print "--------------------------"
    print "Matrix transpose"
    print "transpose is\n %s"%(sess.run(mattrans))
    print "-------------------------"
    print "Inverse matrix"
    print "matrix inverse is \n%s"%(sess.run(matinver))

运行结果:

Matrix addition
the addition is 
[[ 6  5]
 [ 5  8]
 [11 13]]
---------------------------
Scalar multiplication
the scalar multiplication is 
[[ 3  6]
 [ 9 12]
 [15 18]]
--------------------------
Matrix vector multiplication
the matrix vector multiplication is
[[14]
 [32]]
--------------------------
Matrix multiplication
the matrix multiplication is
 [[ 8 11]
 [13 17]
 [18 23]]
--------------------------
Matrix transpose
transpose is
 [[1 3 5]
 [2 4 6]]
-------------------------
Inverse matrix
matrix inverse is 
[[-0.99999994 -1.99999988  3.99999976]
 [ 1.99999988  2.99999976 -5.99999952]
 [-0.          1.         -1.        ]]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习入门——线性代数简单回顾 的相关文章

随机推荐

  • 基于python图书馆管理系统和读者系统(附完整代码以及打包好的exe文件)

    摘要 本文基于python的图书馆管理系统和读者系统 实现了登录 注册 忘记密码 书籍查询 借阅 归还 修改等功能 通过csv文件将数据存储在本地 注册时采用了邮箱验证码 模拟了现实场景 全部源代码地址见文末 如果有其他奇思妙想或者bug欢
  • 【pytorch目标检测】创新之作:Fast R-CNN算法解读

    背景 2015年 提出了Fast RCNN算法 训练步骤实现端到端 CNN 基于VGG6 Fast R CNN是基于R CNN和SPPnets进行的改进 成果 训练速度比RCNN块9倍 测试速度快乐23倍 准确率68 4 SPPnets网络
  • Python实现PDF合并工具(含源码)

    在工作中 每个月都会要遇到报账的情况 在现如今很多都是使用电子发票 获得的电子发票很多都是PDF格式 偶尔也有图片格式的 而且还是一张发票一个pdf文档 在打印贴票时 就需要一个文档一个文档的打开打印 十分的不便捷 当然也可以使用某某PDF
  • Trello中的Scrum

    Trello的用户数量近期超越了1000万的大关 它正迅速成为各色敏捷团队中流行的工具 它的简洁及在Web 移动端优秀的体验 使它从众多更复杂的解决方案中脱颖而出 赢得了更多的团队 因为Trello完全不在意用户如何使用 所以导致用户在用它
  • Mysql 基础

    判断数据库是否存在 存在就删除 drop database if exists testdb 创建数据库表的操作 create database testdb 使用数据库 use testdb 判断创建的表是否存在 存在就删除 drop t
  • 2021年12月-电子学会青少年等级考试C语言(一级)真题与解析

    2021年12月软件编程 C语言 等级考试 一级 分数 100 题数 5 时间限制 1000 ms 内存限制 65536 kB 1 输出整数部分 题目描述 输入一个双精度浮点数 输出其整数部分 输入 一个双精度浮点数f 0 lt f lt
  • PMD规则开发实战:打造自己的代码质量检测工具

    PMD介绍 介绍 PMD 安装和配置 如何安装和配置 PMD 插件以在的项目中使用 IDEA中如何使用PMD插件 Java项目中如何使用PMD PMD规则开发介绍 介绍如何编写和使用自定义 PMD 规则 SonarQube如何集成PMD S
  • Java 数据输入

    数据输入 数据输入概述 Java 提供接口用于接受控制台输入的变量 并进行相应的操作 Scanner 使用的基本步骤 导包 import java util Scanner 导包的动作必须出现在类定义的上面 创建对象 Scanner sca
  • 网易资深安卓架构师:没想到一个Handler还有中高级几种问法,论程序员成长的正确姿势

    本专栏专注分享大型Bat面试知识 后续会持续更新 喜欢的话麻烦点击一个关注 面试官 组件化如何实现 组件化与插件化的差别在哪里 该怎么选型 心理分析 面试官从架构层次 了解求职者是否用过 模块化 组件化 和插件化 在过去经验有没有运用过这些
  • 【Spring Boot 初识丨三】starter

    上一篇讲了如何构建MAVEN项目 本篇来讲一讲 starter 依赖项 Spring Boot 初识 Spring Boot 初识丨一 入门实战 Spring Boot 初识丨二 maven Spring Boot 初识丨三 starter
  • 【Android Studio 创建module】

    一 如何创建模型 一个项目里边可以有多个module 每个module对应的都是一个独立的程序 选择File菜单 gt New gt New Module gt 填写Module名称 library 一直next直到finish 给Modu
  • 如何从零开始搭建公司自动化测试框架?

    搭建的自动化测试框架要包括API测试 UI测试 APP测试三类 以上三类其实可以简化为两类 那就是 1 接口自动化测试框架搭建 2 UI自动化测试框架搭建 没问题 安排 且是手把手教你如何搭建以上两类自动化测试框架 回到这篇主题 刷到这个问
  • linux c语言常见面试题及答案,Linux下C语言的几道经典面试题小结(分享)

    Linux下C语言的几道经典面试题小结 分享 本篇文章整理了几道Linux下C语言的经典面试题 相信对大家更好的理解Linux下的C语言会有很大的帮助 欢迎大家探讨指正 1 如果在Linux下使用GCC编译器执行下列程序 输出结果是什么 答
  • Android中的进程与多线程的讲解(Handler和AsyncTask)

    Hello EveryBody 又到了我们相聚的时间了 今天要总结的东西现在有点迫不及待了 因为在实际的应用中如果用不到它 我们就不能再听歌的同时发送信息 其实大家应该都知道了 今天的主角就是进程与多线程 好了 其他的不多说 直接进入正题吧
  • C++中int 转char

    C 中int 转char int a 10 0 1 2 3 4 5 6 7 8 9 char b a 1 0 则b 的值为字符 1
  • 在Mysql中如何显示所有用户?

    这是一个mysql初学者经常问到的一个问题 今天我们就带大家看看是如何在Mysql中显示所有用户的 通常我们在mysql中使用SHOW DATABASES可以显示所有的数据库 SHOW TABLES将会显示所有的数据表 那么你是不是会猜测显
  • 电脑设备中PCI简易通讯控制器驱动显示黄色感叹号图标怎么办【申明:来源于网络】

    电脑设备中PCI简易通讯控制器驱动显示黄色感叹号图标怎么办 申明 来源于网络 电脑设备中PCI简易通讯控制器驱动显示黄色感叹号图标 http wenda so com q 1467255688725898
  • CSS中的cursor属性

    1 CSS cursor 属性 1 问题描述 最近在项目中 碰到这样一个问题 设置了一个div盒子 点击盒子会触发事件 弹出一个弹框 但是在鼠标移到这个盒子的时候 鼠标的箭头并没有变成一只手的形状 经过查阅资料发现elementUI的按钮
  • 关于Linux下的stat()函数

    文章目录 一 stat 的组成 二 具体使用 1 简单的ls程序 2 运行结果如下 一 stat 的组成 头文件 include
  • 机器学习入门——线性代数简单回顾

    本节课程回顾了一些简单但常用的线性代数知识 很基础的 我会直接跳过 并对矩阵的一些运算进行编程实现 3 1 矩阵的加法和标量乘法 矩阵加法 要求行列数要相等 然后 每个元素对应相加 exp 矩阵的标量乘法 每个元素都要乘 exp 3 2 矩