12 tensorflow實戰:修改三維tensor矩陣的某個剖面


# -*- 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}))

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM