Tensorflow:如何在python中将标量张量转换为标量变量?

时间:2016-05-05 11:27:19

标签: tensorflow

在Tensorflow中,我想将标量张量转换为整数。有可能吗?

我需要创建一个循环,循环的索引是一个标量张量,在循环体内部,我想使用索引来访问张量数组中的一个条目。

例如:

idx = tf.constant(0)
c = lambda i : tf.less(i, 10)
def body(idx) :
  i = # convert idx to int 
  b = weights[i]  # access an entry in a tensor array, tensor cannot be used directly
  ....
  return idx+1
tf.while_loop(c, body, [idx])

7 个答案:

答案 0 :(得分:10)

在Tensorflow 2.0+中,它很简单:

<?php

include_once 'database.php';


if($_SERVER["REQUEST_METHOD"] == "POST" and isset($_POST['sign_up'])) {

    $uname = $_POST['txt_uname'];
    $password = $_POST['txt_pwd'];
    $databasenam = $_POST['database_uname'];
    $email  = $_POST['email'];
    $cpassword = $_POST['cpassword'];

    $db_query = "CREATE DATABASE IF NOT EXISTS " . $databasenam . "";
    if(!mysqli_query($conn, $db_query)) {
        echo "<p class='error'> * This username was taken, try another please </p>";
    }

答案 1 :(得分:2)

2.0兼容答案:以下代码会将张量转换为标量。

!pip install tensorflow==2.0
import tensorflow as tf
tf.__version__ #'2.0.0'
x = tf.constant([[1, 1, 1], [1, 1, 1]])
Reduce_Sum_Tensor = tf.reduce_sum(x)
print(Reduce_Sum_Tensor) #<tf.Tensor: id=11, shape=(), dtype=int32, numpy=6>
print(Reduce_Sum_Tensor.numpy()) # 6, which is a Scalar

This是Google Colab的链接,在其中执行上述代码。

答案 2 :(得分:1)

你需要创建一个tf.Session()以将张量强制转换为标量

with tf.Session() as sess:
    scalar = tensor_scalar.eval()

如果您使用的是IPython笔记本,可以使用Interactive Session

sess = tf.InteractiveSession()
scalar = tensor_scalar.eval()
# Other ops
sess.close()

答案 3 :(得分:1)

它应该像在张量上调用 int() 一样简单。

int(tf.random.uniform((), minval=0, maxval=32, dtype=tf.dtypes.int32))
>> 4

我已经在 TF 2.2 和 2.4 中检查过这个

答案 4 :(得分:0)

也许有帮助。只是简单的使用:

idx2np = int(idx)

您现在可以测试它是否是数字:

test_sum = idx2np + 1
print(str(test_sum))

答案 5 :(得分:-2)

尝试使用tf.reshape()

# tensor 't' is [7]
# shape `[]` reshapes to a scalar
reshape(t, []) ==> 7

这来自https://www.tensorflow.org/api_docs/python/tf/reshape

答案 6 :(得分:-5)

您需要评估张量以获得值。

如果你想这样做:

i = # convert idx to int

你可以做sess.run()或idx.eval():

i = sess.run(idx)