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.21889997
0.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.5465408
1.06096387 1.47238612 -1.99268937 1.28203201]
[ 0.36932501 0.30012983 1.94679129 0.59601396 -0.16721351 -0.42786792
0.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.58513969
0.75772232 -0.47386578 -0.34529254 -0.71658897]
[ 0.74709773 -0.0835886 1.14453304 0.70367438 0.07037418 -0.15808868
0.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.2672275
0.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 #placerholder
rand_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