# -*- coding: utf-8 -*- """ Created on Mon Apr 22 21:02:02 2019 @author: a """ # -*- coding: utf-8 -*- """ Created on Sat Dec 1 16:53:26 2018 @author: a """ import tensorflow as tf ############創建三維矩陣 x = tf.placeholder(tf.int32,shape=[],name="input") y = tf.placeholder(tf.int32,shape=[],name="input2") z = tf.placeholder(tf.int32,shape=[],name="input3") matrix_element_num=x*y*z batch_sentence_nodes_vectors=tf.zeros(matrix_element_num,tf.float64) batch_sentence_nodes_vectors=tf.reshape(batch_sentence_nodes_vectors,[x,y,z]) sess = tf.Session() print (tf.shape(x)) xiaojie=sess.run([x,y,z],feed_dict={x:7,y:8,z:9}) print(xiaojie) xiaojie2=sess.run(batch_sentence_nodes_vectors,feed_dict={x:7,y:8,z:9}) ############創建三維矩陣 ############我們目前能夠做的就是,指定第一維度的值,然后將一個二維矩陣,必須小於三維矩陣的第二維度和第三維度,替換掉一整個剖面。 #def modify_one_column(tensor,columnTensor,index,numlines,numcolunms):#index也是tensor def modify_one_profile(tensor,_2DmatrixTensor,index_firstDimension,size_firstDimension,size_secondDimension,size_thirdDimension): ##tensor為三維矩陣 ##首先,我們用index_firstDimenion取出整個tensor在第一維度取值index_firstDimenion的剖面,然后分為剖面左側部分,剖面右側部分,然后將取出的剖面替換成二維矩陣 _2DmatrixTensor=tf.expand_dims(_2DmatrixTensor,axis=0) #擴展成為三維 new_tensor_left=tf.slice(tensor, [0,0,0], [index_firstDimension,size_secondDimension,size_thirdDimension]) #剖面左側部分 new_tensor_right=tf.slice(tensor, [index_firstDimension+1,0,0], [size_firstDimension-index_firstDimension-1,size_secondDimension,size_thirdDimension]) #剖面右側部分 new_tensor=tf.concat([new_tensor_left,_2DmatrixTensor,new_tensor_right],0) return new_tensor_left,new_tensor_right,new_tensor #下面測試將一個不夠維度的二維矩陣補齊按指定維度補齊 def buqi_2DmatrixTensor(_2DmatrixTensor,lines,columns,targetlines,targetcolumns): #首先在列上補齊 buqi_column=tf.zeros([lines,targetcolumns-columns],dtype=tf.float64) _2DmatrixTensor=tf.concat([_2DmatrixTensor,buqi_column],axis=1) buqi_line=tf.zeros(shape=[targetlines-lines,targetcolumns],dtype=tf.float64) _2DmatrixTensor=tf.concat([_2DmatrixTensor,buqi_line],axis=0) return _2DmatrixTensor #_2DmatrixTensor=tf.ones(y*z,tf.float64) #_2DmatrixTensor=tf.reshape(_2DmatrixTensor,[y,z]) size_firstDimension=tf.constant(7,tf.int32) size_secondDimension=tf.constant(8,tf.int32) size_thirdDimension=tf.constant(9,tf.int32) #_2DmatrixTensor=tf.ones(1*2,tf.float64) #_2DmatrixTensor=tf.reshape(_2DmatrixTensor,[1,2]) #lines=tf.constant(1,tf.int32) #columns=tf.constant(2,tf.int32) #_2DmatrixTensor=buqi_2DmatrixTensor(_2DmatrixTensor,lines,columns,size_secondDimension,size_thirdDimension) #_2DmatrixTensor=tf.ones(8*2,tf.float64) #_2DmatrixTensor=tf.reshape(_2DmatrixTensor,[8,2]) #lines=tf.constant(8,tf.int32) #columns=tf.constant(2,tf.int32) #_2DmatrixTensor=buqi_2DmatrixTensor(_2DmatrixTensor,lines,columns,size_secondDimension,size_thirdDimension) _2DmatrixTensor=tf.ones(1*9,tf.float64) _2DmatrixTensor=tf.reshape(_2DmatrixTensor,[1,9]) lines=tf.constant(1,tf.int32) columns=tf.constant(9,tf.int32) _2DmatrixTensor=buqi_2DmatrixTensor(_2DmatrixTensor,lines,columns,size_secondDimension,size_thirdDimension) ## for index in range(7): index_tensor=tf.constant(index,tf.int32) new_tensor_left,new_tensor_right,batch_sentence_nodes_vectors=modify_one_profile(batch_sentence_nodes_vectors,_2DmatrixTensor,index_tensor,size_firstDimension,size_secondDimension,size_thirdDimension) print (sess.run(batch_sentence_nodes_vectors,feed_dict={x:7,y:8,z:9}))