鱼C论坛

 找回密码
 立即注册
查看: 1042|回复: 4

关于TensorFlow的matmul函数问题

[复制链接]
发表于 2019-1-4 18:31:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import tensorflow as tf

x = tf.random_normal([5, 1], mean=0.0, stddev=0.5, name="x_data")

w=tf.constant(1.0, shape=[1, 5])

y_true = tf.matmul(x, w)

with tf.Session() as sess:
    print(x.eval())
    print("*" * 1000)
    print(w.eval())
    print("*" * 1000)
    print(y_true.eval())

matmul不是两个矩阵的相乘么,为什么得到的结果不对呢?ps:第一个是矩阵x,第二个是矩阵w,第三个是用他们相乘得到的y_true

[[ 0.16722   ]
[-1.1962833 ]
[-0.11156075]
[-0.12091777]
[-0.904426  ]]
************************************************************************************************************************************************************************************************************************************************
[[1. 1. 1. 1. 1.]]
************************************************************************************************************************************************************************************************************************************************
[[ 0.04640244  0.04640244  0.04640244  0.04640244  0.04640244]
[ 0.72062844  0.72062844  0.72062844  0.72062844  0.72062844]
[ 0.39770067  0.39770067  0.39770067  0.39770067  0.39770067]
[ 0.45561194  0.45561194  0.45561194  0.45561194  0.45561194]
[-0.01117797 -0.01117797 -0.01117797 -0.01117797 -0.01117797]]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-1-4 18:33:35 | 显示全部楼层
一个是行向量,一个是列向量,5*1乘1*5
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-4 18:47:30 | 显示全部楼层
塔利班 发表于 2019-1-4 18:33
一个是行向量,一个是列向量,5*1乘1*5

得到的是5*5.但是里面的值为什么不对啊,我用一个全为1的向量乘的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-4 20:34:20 | 显示全部楼层
lidongze6 发表于 2019-1-4 18:47
得到的是5*5.但是里面的值为什么不对啊,我用一个全为1的向量乘的

不知道,我还没有安装,@alltolove
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-4 21:13:11 | 显示全部楼层
tensorflow的机制问题。。。
调用一次
  1. x.eval()
复制代码
执行一次
  1. tf.random_normal([5, 1], mean=0.0, stddev=0.5, name="x_data")
复制代码

调用一次
  1. y.eval()
复制代码
执行一次
  1. tf.constant(1.0, shape=[1, 5])
复制代码

调用一次
  1. y_true.eval()
复制代码
重新执行一次
  1. tf.random_normal([5, 1], mean=0.0, stddev=0.5, name="x_data")
复制代码
  1. tf.constant(1.0, shape=[1, 5])
复制代码
然后再乘。
所以你看到的x不是乘时候的x
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-12 21:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表