当前位置: 代码迷 >> 综合 >> tf.argmax, tf.equal, tf.cast, tf.truncated_normal, tensorflow.placeholder的用法
  详细解决方案

tf.argmax, tf.equal, tf.cast, tf.truncated_normal, tensorflow.placeholder的用法

热度:95   发布时间:2023-10-11 07:09:50.0

1. tf.argmax()函数

tf.argmax可以认为就是np.argmax。tensorflow使用numpy实现的这个API。 
  简单的说,tf.argmax就是返回最大的那个数值所在的下标。tf.argmax(array,axis)

    当axis=1时返回每列最大值的下标,当axis=0时返回每行最大值的下班。

2. tf.equal()函数

tf.equal(A,B)是对比这两个矩阵或者向量的相等的元素,如果是相等的那就返回True,反正返回False,返回的值的矩阵维度和A是一样的

A = [[1,3,4,5,6]]  
B = [[1,3,4,3,2]]with tf.Session() as sess:  print(sess.run(tf.equal(A, B)))[[ True  True  True False False]]

3. tf.cast()函数

tf.cast(x, dtype)将x的数据格式转化成dtype.

a = tf.Variable([1,0,0,1,1])
b = tf.cast(a,dtype=tf.bool)
sess = tf.Session()a = tf.Variable([1,0,0,1,1])
b = tf.cast(a,dtype=tf.bool)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
print(sess.run(b))[ True False False  True  True]

4. tf.truncated_normal()

tf.truncated_normal(shape, mean, stddev):shape表示生成张量的维度,mean是均值,stddev是标准差。这个函数产生正太分布,均值和标准差自己设定。这是一个截断的产生正太分布的函数,就是说产生正太分布的值如果与均值的差值大于两倍的标准差,那就重新生成。和一般的正太分布的产生随机数据比起来,这个函数产生的随机数与均值的差距不会超过两倍的标准差,但是一般的别的函数是可能的。

import tensorflow as tf;  
import numpy as np;  
import matplotlib.pyplot as plt;  c = tf.truncated_normal(shape=[10,10], mean=0, stddev=1)  with tf.Session() as sess:  print(sess.run(c))[[ 0.56077307  1.74287605 -0.15655719  0.87136668 -0.4219175   0.94079614-1.31186545  1.94287431  0.70748854  1.15509737][ 0.32469562 -0.91890186 -0.44398952  1.25986481 -1.07295966  0.218899970.19389877 -1.22909117  1.34865403  0.87812191][-0.83542323 -0.05598836 -1.05256093 -1.16475403 -0.17121609 -0.55075479-0.37847248  0.14151201  0.36596569  0.55171227][ 0.45216689  0.12429248 -0.4333829  -0.00368057 -0.20933141  0.54654081.06096387  1.47238612 -1.99268937  1.28203201][ 0.36932501  0.30012983  1.94679129  0.59601396 -0.16721351 -0.427867920.917597   -1.6504811  -0.81060582 -0.35126168][-1.48954999 -0.42889833  0.31517059  1.00009787  0.26073182  1.26285052-1.80997884  0.51399821 -0.27673215  0.15389352][ 0.8669793  -0.28650126  1.39484227 -0.4041909  -1.70028269  0.585139690.75772232 -0.47386578 -0.34529254 -0.71658897][ 0.74709773 -0.0835886   1.14453304  0.70367438  0.07037418 -0.158088680.23158503 -0.67268801  0.55869597  0.12777361][-0.52604282  0.64181858 -0.04147881  0.78596973  0.69087744  0.56500375-1.12409449 -0.42864376  0.30804652  1.33116138][-1.36940789 -0.4526186  -0.87445366  0.19748467 -0.06541829 -0.26722750.63084471  0.76155263  0.83874393  0.91775542]]

5. tensorflow.placeholder()

tensorflow.placeholder(),placeholder是占位符的意思,在tensorflow中类似于函数参数,在执行的时候再赋具体的值。

参数含义: 
dtype:数据类型。常用的是tf.float32,tf.float64等数值类型 
shape:数据形状。默认是None,就是一维值,也可以是多维,比如[2,3], [None, 3]表示列是3,行不定 
name:名称。
placeholder,中文意思是占位符,在tensorflow中类似于函数参数,运行时必须传入值。

#!/usr/bin/env python
# _*_ coding: utf-8 _*_import tensorflow as tf
import numpy as np# 定义placeholder
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)# 定义乘法运算
output = tf.multiply(input1, input2)# 通过session执行乘法运行
with tf.Session() as sess:# 执行时要传入placeholder的值print sess.run(output, feed_dict = {input1:[7.], input2: [2.]})执行结果如下:[ 14.]

还有如下的使用规则: 

x = tf.placeholder(tf.float32, shape=(88, 88))  
y = tf.matmul(x, x)  with tf.Session() as sess:  print(sess.run(y))  # ERROR: . you must feed a value for #placerholderrand_array = np.random.rand(88, 88)  print(sess.run(y, feed_dict={x: rand_array}))  # Right 

6. tf.sparse_placeholder

x = tf.sparse_placeholder(tf.float32)
y = tf.sparse_reduce_sum(x)with tf.Session() as sess:print(sess.run(y))  # ERROR: will fail because x was not fed.indices = np.array([[3, 2, 0], [4, 5, 1]], dtype=np.int64)values = np.array([1.0, 2.0], dtype=np.float32)shape = np.array([7, 9, 2], dtype=np.int64)print(sess.run(y, feed_dict={x: tf.SparseTensorValue(indices, values, shape)}))  # Will succeed.print(sess.run(y, feed_dict={x: (indices, values, shape)}))  # Will succeed.sp = tf.SparseTensor(indices=indices, values=values, dense_shape=shape)sp_value = sp.eval(session=sess)print(sess.run(y, feed_dict={x: sp_value}))  # Will succeed

函数参数:

  • dtype:张量中要提供的 values 元素的类型.
  • shape:要提供的张量的形状(可选).如果未指定形状,则可以提供任何形状的稀疏张量.
  • name:前缀操作的名称(可选).

函数返回值:

tf.sparse_placeholder 函数返回一个可以用作提供值的句柄的 SparseTensor,但不能直接计算.

可能引发的异常:

  • RuntimeError:如果 eager 执行已启用,则引发该异常.

7. tf.random_uniform()

tf.random_uniform((4, 4), minval=low,maxval=high,dtype=tf.float32)))返回4*4的矩阵,产生于low和high之间,产生的值是均匀分布的。

例如:

import tensorflow as tf
import numpy as np
 
with tf.Session() as sess:
    print(sess.run(tf.random_uniform(
        (4, 4), minval=-0.5,
        maxval=0.5,dtype=tf.float32)))
输出:
[[ 0.23706067  0.42579055  0.16444612  0.12134457]
 [ 0.14245582  0.32224071 -0.3107301   0.29911542]
 [-0.03472292 -0.37411058 -0.22680879  0.21656895]
 [-0.37798405  0.31725729 -0.17690742 -0.02995324]]

转自:

https://blog.csdn.net/zhuzuwei/article/details/78983562 

https://www.jianshu.com/p/195e4da1dde7

https://www.w3cschool.cn/tensorflow_python/tensorflow_python-zj1v2ll2.html

  相关解决方案