java 张量运算,乘以两个张量

在尝试使用TensorFlow进行张量乘法时遇到了问题。代码创建了两个张量,一个形状为(10000,784),另一个形状为(784,1024)。在尝试使用`tf.matmul()`进行乘法操作时,出现错误提示,指出这两个张量必须来自同一个计算图。检查发现张量是在不同的上下文中定义的,可能是导致错误的原因。解决方案可能涉及确保所有张量在同一计算图中定义。
摘要由CSDN通过智能技术生成

我在Tensorflow中有两个张量,它们有以下两种形状:

print(tf.valid_dataset.get_shape())

print(weights1.get_shape())

有结果:

(10000, 784)

(784, 1024)

但是,如果我试图将它们相乘,就像这样:

tf.matmul(tf_valid_dataset, weights1)

我明白了:

Tensor("Variable:0", shape=(784, 1024), dtype=float32_ref) must be from the same graph as Tensor("Const:0", shape=(10000, 784), dtype=float32).

由于我将它们放在它们都具有 784 大小的一侧,这对我来说似乎是正确的 .

知道什么可能是错的吗?

编辑:

我在print语句之前的代码是这样的:

num_hidden_nodes=1024

batch_size = 128

learning_rate = 0.5

graph = tf.Graph()

with graph.as_default():

tf_train_dataset = tf.placeholder(tf.float32, shape=(batch_size, image_size*image_size))

tf_train_labels = tf.placeholder(tf.float32, shape=(batch_size, num_labels))

tf.valid_dataset = tf.constant(valid_dataset)

tf.test_dataset = tf.constant(test_dataset)

weights1 = tf.Variable(tf.truncated_normal([image_size * image_size, num_hidden_nodes]))

biases1 = tf.Variable(tf.zeros([num_hidden_nodes]))

weights2 = tf.Variable(tf.truncated_normal([num_hidden_nodes, num_labels]))

biases2 = tf.Variable(tf.zeros([num_labels]))

weights = [weights1, biases1, weights2, biases2]

lay1_train = tf.nn.relu(tf.matmul(tf_train_dataset, weights1) + biases1)

logits = tf.matmul(lay1_train, weights2) + biases2

loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=tf_train_labels))

optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值