Ich arbeite mit hyperspektralem Bild der Größe [610, 340, 102] von here gespeichert in .mat-Datei. Nach dem Laden mit scipy wird es als Array dargestellt. Bevor ich Berechnungen anstellen kann, muss ich es auf [610 * 340, 102] umformen. Der folgende Code läuft auf Desktop-Rechner mit i5-6400 Prozessor:Drastisch langsames Kopieren (?) Nach Tensorflow
import tensorflow as tf
import scipy.io as spio
import time
pavia_u = spio.loadmat("./../data/PaviaU.mat")["paviaU"]
original_shape = tf.shape(pavia_u)
pavia_u_reshaped = tf.to_float(tf.squeeze(tf.reshape(pavia_u, [-1, original_shape[0] * original_shape[1], original_shape[2]])))
with tf.Session() as session:
start = time.clock()
pavia_u_reshaped_value = session.run(pavia_u_reshaped)
end = time.clock()
print("Reshape time: {}".format(end - start))
und er druckt: Reshape time: 157.7449091748693
Es scheint, dass reshape Betrieb auf so relativ kleine Datenmenge nicht so langsam sein sollte. Wie auch immer, ich zog Umformung eine
pavia_u = spio.loadmat("./../data/PaviaU.mat")["paviaU"]
original_shape = pavia_u.shape
pavia_u_reshaped = pavia_u.reshape([-1, original_shape[0] * original_shape[1], original_shape[2]]).squeeze())
with tf.Session() as session:
start = time.clock()
session.run(tf.identity(pavia_u_reshaped))
end = time.clock()
print("Test time: {}".format(end - start))
numpy die druckt: Test time: 143.26529380869727
Was jetzt so viel Zeit in Anspruch nimmt? Wie behebe ich das?
es eine Reihe von Initialisierungen ist, die auf dem ersten session.run Anruf laufen lassen, was ist, wenn Sie es zweimal und Benchmark laufen beide Anrufe –
I 4 aufeinanderfolgende Anrufe von 'session.run gemessen haben (tf.identity (pavia_u_reshaped)) 'und der Test ausgedruckt' Testzeit: 562.1225702215002' – Aeteros