概述

在使用keras中的keras.backend.batch_dot和tf.matmul实现功能其实是一样的智能矩阵乘法,比如A,B,C,D,E,F,G,H,I,J,K,L都是二维矩阵,中间点表示矩阵乘法,AG 表示矩阵A 和G 矩阵乘法(A 的列维度等于G 行维度),WX=Z

import keras.backend as K

import tensorflow as tf

import numpy as np

w = K.variable(np.random.randint(10,size=(10,12,4,5)))

k = K.variable(np.random.randint(10,size=(10,12,5,8)))

z = K.batch_dot(w,k)

print(z.shape) #(10, 12, 4, 8)

import keras.backend as K

import tensorflow as tf

import numpy as np

w = tf.Variable(np.random.randint(10,size=(10,12,4,5)),dtype=tf.float32)

k = tf.Variable(np.random.randint(10,size=(10,12,5,8)),dtype=tf.float32)

z = tf.matmul(w,k)

print(z.shape) #(10, 12, 4, 8)

示例

from keras import backend as K

a = K.ones((3,4,5,2))

b = K.ones((2,5,3,7))

c = K.dot(a, b)

print(c.shape)

会输出:

ValueError: Dimensions must be equal, but are 2 and 3 for ‘MatMul' (op: ‘MatMul') with input shapes: [60,2], [3,70].

from keras import backend as K

a = K.ones((3,4))

b = K.ones((4,5))

c = K.dot(a, b)

print(c.shape)#(3,5)

或者

import tensorflow as tf

a = tf.ones((3,4))

b = tf.ones((4,5))

c = tf.matmul(a, b)

print(c.shape)#(3,5)

如果增加维度:

from keras import backend as K

a = K.ones((2,3,4))

b = K.ones((7,4,5))

c = K.dot(a, b)

print(c.shape)#(2, 3, 7, 5)

这个矩阵乘法会沿着两个矩阵最后两个维度进行乘法,不是element-wise矩阵乘法

from keras import backend as K

a = K.ones((1, 2, 3 , 4))

b = K.ones((8, 7, 4, 5))

c = K.dot(a, b)

print(c.shape)#(1, 2, 3, 8, 7, 5)

keras的dot方法是Theano中的复制

from keras import backend as K

a = K.ones((1, 2, 4))

b = K.ones((8, 7, 4, 5))

c = K.dot(a, b)

print(c.shape)# (1, 2, 8, 7, 5).

from keras import backend as K

a = K.ones((9, 8, 7, 4, 2))

b = K.ones((9, 8, 7, 2, 5))

c = K.batch_dot(a, b)

print(c.shape) #(9, 8, 7, 4, 5)

或者

import tensorflow as tf

a = tf.ones((9, 8, 7, 4, 2))

b = tf.ones((9, 8, 7, 2, 5))

c = tf.matmul(a, b)

print(c.shape) #(9, 8, 7, 4, 5)

以上这篇浅谈keras中的batch_dot,dot方法和TensorFlow的matmul就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持python博客。

python的matmul_浅谈keras中的batch_dot,dot方法和TensorFlow的matmul相关推荐

  1. python模型保存save_浅谈keras保存模型中的save()和save_weights()区别

    今天做了一个关于keras保存模型的实验,希望有助于大家了解keras保存模型的区别. 我们知道keras的模型一般保存为后缀名为h5的文件,比如final_model.h5.同样是h5文件用save ...

  2. python去水印如何制作mask_浅谈图像处理中掩膜(mask)的意义

    刚开始涉及到图像处理的时候,在opencv等库中总会看到mask这么一个参数,非常的不理解,在查询一系列资料之后,写下它们,以供翻阅. 什么是掩膜(mask) 数字图像处理中的掩膜的概念是借鉴于PCB ...

  3. python中rstrip用法_浅谈Python3中strip()、lstrip()、rstrip()用法详解

    简单来说,三种方法是为了删除字符串中不同位置的指定字符.其中,strip()用于去除字符串的首尾字符,同理,lstrip()用于去除左边的字符,rstrip()用于去除右边的字符 Python中有三个 ...

  4. python列表和数组区别java_浅谈numpy中np.array()与np.asarray的区别以及.tolist

    array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会. 1.输入为列表时 ...

  5. python中scipy.optimize_浅谈SciPy中的optimize.minimize实现受限优化问题

    问题描述:有一批样本x,每个样本都有几个固定的标签,如(男,24岁,上海),需要从中抽取一批样本,使样本总的标签比例满足分布P(x),如(男:女=49%:51%.20岁:30岁=9%:11%..... ...

  6. python3打印如何换行_浅谈Python3中print函数的换行

    Python3中print函数的换行 最近看了看Python的应用,从入门级的九九乘法表开始,结果发现Python3.x和Python2.x真的是有太大的不同之处,就比如这里的换行处理,怕忘记先记下来 ...

  7. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

  8. mybatis与php,浅谈mybatis中的#和$的区别

    浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...

  9. 浅谈CSS3中display属性的Flex布局,关于登陆页面属性框的设置

    声明:本文转发自三里屯柯南的浅谈CSS3中display属性的Flex布局http://www.cnblogs.com/xuyuntao/articles/6391728.html 基本概念 采用Fl ...

最新文章

  1. python内置库之学习configparser库(一)
  2. 对Java单例模式 volatile关键字作用的理解
  3. 综合程序设计 7-4 完美的代价 (40分)
  4. docker入门之容器网络
  5. docker安装gitlab_docker 安装部署gitlab
  6. TypeScript入门教程 之 Promise
  7. Twitter 有权删除去世用户的账号吗?
  8. MariaDB基本操作--(创建用户)(转)
  9. CUDA环境变量添加
  10. 创建oracle数据库job服务:PlSqlDev操作job
  11. PCI驱动学习总结-国嵌视频
  12. 使用stream报错:stream has already been operated upon or closed
  13. 直播当道,平台该如何做好内容审核规避风险?
  14. Prim算法java实现
  15. Java面向对象(2).抽象类和接口
  16. 更新TTK失败,请检查网络连接
  17. openwrt双wan环境搭建以及适配UPnP
  18. SAP市值暴跌与SAP系统间接访问之殇
  19. [转]电荷泵/charge pump的原理介绍
  20. Word2Vec 实践

热门文章

  1. 在mybatis项目中实现mysql列转行
  2. 怎么把video文件改成mp4_如何将QLV格式(腾讯视频)转换成MP4视频?
  3. 随机信号的参数建模法
  4. 环境与资源保护法学类毕业论文文献包含哪些?
  5. 如何选择云笔记工具?可以用云笔记做什么?
  6. android蜗牛进度条,Android实现蜗牛进度条效果
  7. ios大牛李明杰亲授《从入门到精通Swift编程》限时优惠活动推出!已近600人报名直播课!
  8. python办公自动化(八)python-docx实现word的批量合并、制作邀请函以及数据的情感分析
  9. 递归——斐波那契数列
  10. 计算机应用填空题大全,计算机应用基础填空题(附答案)