浅谈keras中的batch_dot,dot方法和TensorFlow的matmul

 更新时间:2020年06月18日 11:23:35   作者:huml126  
这篇文章主要介绍了浅谈keras中的batch_dot,dot方法和TensorFlow的matmul,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

概述

在使用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 colormap库的安装和使用详情

    Python colormap库的安装和使用详情

    这篇文章主要介绍了Python colormap库的安装和使用详情,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 适合Python初学者的一些编程技巧

    适合Python初学者的一些编程技巧

    这篇文章主要介绍了给Python初学者的一些编程技巧,皆是基于基础的一些编程习惯建议,需要的朋友可以参考下
    2020-02-02
  • 通过python爬虫mechanize库爬取本机ip地址的方法

    通过python爬虫mechanize库爬取本机ip地址的方法

    python中的mechanize算是一个比较古老的库了,在python2的时代中,使用的多一些,在python3以后就很少使用了,现在已经是2202年了,可能很多人都没听说过mechanize,这不要紧,我们先来简单的讲解一下,如何使用mechanize,感兴趣的朋友一起看看吧
    2022-08-08
  • 如何解决PyCharm显示:无效的Python SDK

    如何解决PyCharm显示:无效的Python SDK

    这篇文章主要介绍了在不同电脑之间传输Python项目时遇到的路径问题,并提供了解决方法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2025-01-01
  • 查看python下OpenCV版本的方法

    查看python下OpenCV版本的方法

    今天小编就为大家分享一篇查看python下OpenCV版本的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 如何使用python-dotenv解决代码与敏感信息的分离

    如何使用python-dotenv解决代码与敏感信息的分离

    我们开发的每个系统都离不开配置信息,这些信息都非常敏感,一旦泄露出去后果非常严重,被泄露的原因一般是程序员将配置信息和代码混在一起导致的,这篇文章主要给大家介绍了关于如何使用python-dotenv解决代码与敏感信息的分离,需要的朋友可以参考下
    2022-03-03
  • Python解析JSON数据的方法简单例子

    Python解析JSON数据的方法简单例子

    这篇文章主要给大家介绍了关于Python解析JSON数据的方法,解析JSON文件是Python中非常常见的操作,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • 7个提高Python代码运行效率的小技巧

    7个提高Python代码运行效率的小技巧

    提高Python代码的运行效率是每个Python开发者都关心的问题,本文有7个可以提高Python代码运行效率的小贴士,希望对大家有一定的帮助
    2024-11-11
  • python中三种输出格式总结(%,format,f-string)

    python中三种输出格式总结(%,format,f-string)

    在Python语言编程中,我们会与字符串打交道,那务必会输出字符串来查看字符串的内容,下面这篇文章主要给大家介绍了关于python中三种输出格式的相关资料,三种格式分别是%,format,f-string,需要的朋友可以参考下
    2022-03-03
  • python 创建一个空dataframe 然后添加行数据的实例

    python 创建一个空dataframe 然后添加行数据的实例

    今天小编就为大家分享一篇python 创建一个空dataframe 然后添加行数据的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06

最新评论