2017-08-06 1 views
0

Ich möchte mehrere Bilder aus einem Verzeichnis laden und stapeln sie dann in 4Dtensor. Ich schrieb den folgenden Code:Laden mehrerer Bilder in 4D Tensor

import tensorflow as tf 
import matplotlib.image as mpimg 
import matplotlib.pyplot as plt 
import os 
img=tf.Variable(tf.zeros([134,65,147,1]),dtype=tf.float32) 
sess=tf.Session() 
model=tf.global_variables_initializer() 
dir_path = os.path.dirname('C:\\Users\\E6410\\Documents\\Masterarbeit\\specconvneu\\') 
for i in range(134): 
    filename = dir_path + "\\Spec_Test("+str(i+1)+").png" 
    image = mpimg.imread(filename) 
    image = tf.Variable(image,dtype=tf.float32) 
    sess.run(model) 
    image=tf.reshape(image,[65,147,1]) 
    img[i+1,:,:,:].assign(image) 
    sess.run(img) 
    sess.run(image) 

Die Anzahl der Bilder ist 134. Jedes Bild mit einer Höhe von 65 und eine Breite von 147. Sie einen Kanal hat. ich meinen Code ausführen und hatte folgende Fehler:

FailedPreconditionError: Attempting to use uninitialized value Variable_344 
    [[Node: Variable_344/read = Identity[T=DT_FLOAT, _class=["loc:@Variable_344"], _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_344)]] 

Ich verstehe, dass der Compiler die Variable versucht zu lesen, bevor Sie die Variable initialisiert. Ich habe versucht, es auf verschiedene Arten zu initialisieren, aber immer den gleichen Fehler. Könnten Sie helfen, den Fehler zu korrigieren?

Antwort

0

Sie führen hier viele redundante Berechnungen durch, wobei Sie den Zeilen wi folgen lch löse das Problem.

# I don't understand why are you using variable here? 
image = tf.Variable(image,dtype=tf.float32) 
# just convert the array to tensor 
image = tf.convert_to_tensor(image,dtype=tf.float32) 

#Also move the initialization line before for loop 
sess.run(model) 
for i in range(134) 
+0

Ich sah diese Art der Verwendung einer Variablen in einem Tutorial. Aber ich werde versuchen, deinen Weg zu gehen. Danke, – mahmood227

+0

, um sie in einen '4D tensor' zu stapeln, müssen Sie nicht alle diese Codes benutzen. Lies einfach die Bilder mit numpy und speichere sie in einem 4d 'nparray' und' tf.convert_to_tensor' –

+0

Ok. Es scheint auch eine bessere Idee zu sein. – mahmood227