值错误:使用输入dim 1的索引超出范围;输入只有1个用于跨接的\u sli

2024-05-20 17:10:32 发布

您现在位置:Python中文网/ 问答频道 /正文

当我运行以下代码时

import tensorflow as tf


def compute_area(sides):
    a = sides[:, 0]
    b = sides[:, 1]
    c = sides[:, 2]
    # Heron formula
    s = (a + b + c) * 0.5
    area_sq = s * (s - a) * (s - b) * (s - c)
    return tf.sqrt(area_sq)


with tf.Session() as sess:
    area = compute_area(tf.constant([5.0, 3.0, 7.1]))
    result = sess.run(area)
    print(result)

我得到以下错误

^{pr2}$

为什么?在


Tags: 代码importreturntftensorflowdefassq
1条回答
网友
1楼 · 发布于 2024-05-20 17:10:32

[5.0, 3.0, 7.1]是一个向量,它是一维张量。不能使用矩阵语法对向量进行切片或索引,例如使用[:, 0],但是,要访问向量的第一个元素,您需要(简单地)使用[0]。因此,您的代码将按如下方式工作

import tensorflow as tf


def compute_area(sides):
    a, b, c = sides[0], sides[1], sides[2]
    # Heron formula
    s = (a + b + c) * 0.5
    area_sq = s * (s - a) * (s - b) * (s - c)
    return tf.sqrt(area_sq)


with tf.Session() as sess:
    area = compute_area(tf.constant([5.0, 3.0, 7.1]))
    result = sess.run(area)
    print(result)

在TensorFlow关于张量的官方文章的“Referring to tf.Tensor slices”(关于张量的官方文章)中,您有关于TensorFlow中张量的索引和切片的更多信息。在

相关问题 更多 >