本文共 6953 字,大约阅读时间需要 23 分钟。
import matplotlib as mplimport matplotlib.pyplot as pltimport numpy as npimport sklearnimport pandas as pdimport osimport sysimport timeimport tensorflow as tffrom tensorflow import kerasprint(tf.__version__)print(sys.version_info)for module in mpl,np,pd,sklearn,tf,keras: print(module.__name__,module.__version__)t = tf.constant([[1.,2.,3.], [4.,5.,6.]])with tf.Session() as sess: print(t.eval())#Tensor("Const:0", shape=(2, 3), dtype=float32) print(t[:,1:].eval())#取出第2列以后的数据 t[起始行:结束行, 起始列:结束列] print(t[...,1].eval())#只取出第2列 [2. 5.] print(t[:, 1].eval())#只取出第2列 [2. 5.] print((t+10).eval())#矩阵每个元素都+10 print(tf.square(t).eval())#矩阵每个元素都平方 print((t@tf.transpose(t)).eval()) #矩阵 * 矩阵的转置 #tensor转换为numpy #print((t.numpy())) #TensorFlow2.0直接调用numpy() print("t.shape = ",t.shape)#t.shape = (2, 3) print("t = ",t)#t = Tensor("Const:0", shape=(2, 3), dtype=float32) data_numpy = t.eval()#TensorFlow1.x调用eval() print(data_numpy)#TensorFlow1.x print(np.square(data_numpy)) print("data_numpy.shape = ",data_numpy.shape)#data_numpy.shape = (2, 3) print("type(data_numpy) = ",type(data_numpy))#type(data_numpy) =print("data_numpy.dtype = ",data_numpy.dtype)#data_numpy.dtype = float32 data_numpy2 = data_numpy.astype(np.int32)#// 转换数据类型 float -> int print("data_numpy2.dtype int32 = ", data_numpy2.dtype) #data_numpy2.dtype int32 = int32 #numpy转换为tensor np_t = np.array([[1.,2.,3.], [4.,5.,6.]]) print(np_t) print((tf.constant(np_t)))#.eval() #Tensor("Const_1:0", shape=(2, 3), dtype=float64) #numpy 字符串数组转换为数值型 numeric_strings = np.array(['1.2', '2.3', '3.2141'], dtype=np.string_) print(numeric_strings)#[b'1.2' b'2.3' b'3.2141'] print("numeric_strings.dtype = ",numeric_strings.dtype)#numeric_strings.dtype = |S6 numeric_float = numeric_strings.astype(float) print(numeric_float)#[1.2 2.3 3.2141] print("numeric_strings.dtype = ",numeric_strings.dtype)#numeric_strings.dtype = |S6 #tensor格式的strings st = tf.constant("cafe") print(st.eval())#b'cafe' Tensor("Const_2:0", shape=(), dtype=string) print(tf.strings.length(st).eval())#Tensor("StringLength:0", shape=(), dtype=int32) 【需加eval()才打印4】 print(tf.strings.length(st,unit="UTF8_CHAR").eval())#4 print(tf.strings.unicode_decode(st,"UTF8").eval())#[ 99 97 102 101] #tensor格式string的数组array sta = tf.constant(["cafe","caffee","咖啡"]) print(tf.strings.length(sta,unit="UTF8_CHAR").eval())#[4 6 2] print(tf.strings.unicode_decode(sta,"UTF8"))#tf.RaggedTensor(values=Tensor("UnicodeDecode_1/UnicodeDecode:1", shape=(?,), dtype=int32), row_splits=Tensor("UnicodeDecode_1/UnicodeDecode:0", shape=(4,), dtype=int64)) # #ragged tensorf形状分布不固定的Tensor [TensorFlow2.0新特性] # r = tf.ragged.constant([ [11,12], # [21,22,23], # [], # [41] ]) # print(r.eval()) #sparse tensor s = tf.SparseTensor(indices=[[0,1],[1,0],[2,3]],#说明上面数组的这些下标的位置是有值的,[0,1]:第0行,第1列位置有值;[1,0]:第1行,第0列位置有值;[2,3]:第2行,第3列位置有值; values=[1.,2.,3.],#indices所指示的位置的具体值 dense_shape=[3,4])#生成数组的形状 print(s.eval()) #运行结果: # SparseTensorValue(indices=array([[0, 1], # [1, 0], # [2, 3]], dtype=int64), values=array([1., 2., 3.], dtype=float32), # dense_shape=array([3, 4], dtype=int64)) print(tf.sparse.to_dense(s).eval())#Tensor("SparseToDense:0", shape=(3, 4), dtype=float32) 【to_dense需要indices中排好顺序,否则会报错】 #sparse tensor的操作 s2 = s * 2.0 print(s2.eval()) # 运行结果: # SparseTensorValue(indices=array([[0, 1], # [1, 0], # [2, 3]], dtype=int64), values=array([2., 4., 6.], dtype=float32), # dense_shape=array([3, 4], dtype=int64)) try: s3 = s + 1 except TypeError as ex: print(ex)#unsupported operand type(s) for +: 'SparseTensor' and 'int' s4 = tf.constant([ [10.,20.], [30.,40.], [50.,60.], [70.,80.] ] ) print(tf.sparse.sparse_dense_matmul(s,s4).eval()) #SparseTensor使用需要注意的“坑” s5 = tf.SparseTensor(indices=[[0,2],[0,1],[2,3]],#说明上面数组的这些下标的位置是有值的,[0,1]:第0行,第1列位置有值;[1,0]:第1行,第0列位置有值;[2,3]:第2行,第3列位置有值; values=[1.,2.,3.],#indices所指示的位置的具体值 dense_shape=[3,4])#生成数组的形状 print(s5.eval()) s6 = tf.sparse.reorder(s5)#需要这个,否则报错:tensorflow.python.framework.errors_impl.InvalidArgumentError: indices[1] = [0,1] is out of order #默认按照从左到右,从上到下的顺序构造,但是[0,2],[0,1]的顺序发生反转,故需要reorder,否则报错 print(tf.sparse.to_dense(s6).eval()) #变量variables v = tf.Variable( [ [1.,2.,3.],[4.,5.,6.] ] ) print(v)# print(v.value())#Tensor("Variable/read:0", shape=(2, 3), dtype=float32)
执行结果:
1.14.0 sys.version_info(major=3, minor=5, micro=6, releaselevel='final', serial=0) matplotlib 1.5.3 numpy 1.17.1 pandas 0.18.1 sklearn 0.19.0 tensorflow 1.14.0 tensorflow.python.keras.api._v1.keras 2.2.4-tf WARNING: Logging before flag parsing goes to stderr.2020-01-31 15:12:37.886900: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
[[1. 2. 3.] [4. 5. 6.]] [[2. 3.] [5. 6.]] [2. 5.] [2. 5.] [[11. 12. 13.] [14. 15. 16.]] [[ 1. 4. 9.] [16. 25. 36.]] [[14. 32.] [32. 77.]] t.shape = (2, 3) t = Tensor("Const:0", shape=(2, 3), dtype=float32) [[1. 2. 3.] [4. 5. 6.]] [[ 1. 4. 9.] [16. 25. 36.]] data_numpy.shape = (2, 3) type(data_numpy) = <class 'numpy.ndarray'> data_numpy.dtype = float32 data_numpy2.dtype int32 = int32 [[1. 2. 3.] [4. 5. 6.]] Tensor("Const_1:0", shape=(2, 3), dtype=float64) [b'1.2' b'2.3' b'3.2141'] numeric_strings.dtype = |S6 [1.2 2.3 3.2141] numeric_strings.dtype = |S6 b'cafe' 4 4 [ 99 97 102 101] [4 6 2] tf.RaggedTensor(values=Tensor("UnicodeDecode_1/UnicodeDecode:1", shape=(?,), dtype=int32), row_splits=Tensor("UnicodeDecode_1/UnicodeDecode:0", shape=(4,), dtype=int64)) SparseTensorValue(indices=array([[0, 1], [1, 0], [2, 3]], dtype=int64), values=array([1., 2., 3.], dtype=float32), dense_shape=array([3, 4], dtype=int64)) [[0. 1. 0. 0.] [2. 0. 0. 0.] [0. 0. 0. 3.]] SparseTensorValue(indices=array([[0, 1], [1, 0], [2, 3]], dtype=int64), values=array([2., 4., 6.], dtype=float32), dense_shape=array([3, 4], dtype=int64)) unsupported operand type(s) for +: 'SparseTensor' and 'int' [[ 30. 40.] [ 20. 40.] [210. 240.]] SparseTensorValue(indices=array([[0, 2], [0, 1], [2, 3]], dtype=int64), values=array([1., 2., 3.], dtype=float32), dense_shape=array([3, 4], dtype=int64)) [[0. 2. 1. 0.] [0. 0. 0. 0.] [0. 0. 0. 3.]] <tf.Variable 'Variable:0' shape=(2, 3) dtype=float32_ref> Tensor("Variable/read:0", shape=(2, 3), dtype=float32)Process finished with exit code 0
转载地址:http://yeobb.baihongyu.com/