2017-04-07 18 views
1

私はテンソルフローが新しく、積み重ねられたスパースデノイジングオートエンコーダのモデルを作成しようとしています。私はここでの例とgithubを使ってトレーニングをロードする方法を見つけましたが、必要な乗算などを行うためにテンソルとして使うことはできません。(このコードはイメージをロードするためだけです)テンソルフローのテンソルとしてRGBイメージを実装する方法は?

import tensorflow as tf 
import glob 
import numpy as np 
from PIL import Image as im 

im_list = [] 

#LOAD ALL SETS 
training_set = [] 
training_set = glob.glob("folder/training_set/*.jpg") 

testing_set = [] 
testing_set = glob.glob("folder/corrupted/*.jpg") 

# testing my code only for the training set 
filename_queue = tf.train.string_input_producer(training_set) 

reader = tf.WholeFileReader() 
key, value = reader.read(filename_queue) 

#data = tf.image.decode_jpeg(value) 
data = tf.decode_raw(value, tf.uint8) 

sess = tf.InteractiveSession() 

sess.run(tf.global_variables_initializer()) 
#sess.run(tf.global_variables_initializer()) 
sess.run(tf.local_variables_initializer()) 

coord = tf.train.Coordinator() 
threads = tf.train.start_queue_runners(coord=coord) 

for i in range (196): 
    print i 
    m_key = sess.run([key,data]) 
    im_list.append(m_key[1]) 



coord.request_stop() 
coord.join(threads) 

このコードを使用することで、すべての画像をデータを含むuint8配列のリストとして保存できますが、サイズは〜800〜1000までです。私の画像サイズは32x32x3なので何かが欠落しています。私が試した

彼ら他の方法は次のとおりです。

filename_queue = tf.train.string_input_producer(training_set) 

image_reader = tf.WholeFileReader() 

_, image_file = image_reader.read(filename_queue) 

imagee = tf.image.decode_jpeg(image_file) 

#tf.cast(imagee, tf.float32) 

sess = tf.InteractiveSession() 

sess.run(tf.global_variables_initializer()) 

coord = tf.train.Coordinator() 
threads = tf.train.start_queue_runners(coord=coord) 

image = sess.run(imagee) 

imaginar = image.astype(np.float32) 

#train_step.run(feed_dict={x: imaginar, y_: imaginar_test}) 

coord.request_stop() 
coord.join(threads) 

とイムは

y = tf.matmul(x,W) + b   
h_x_s = tf.sigmoid(y) 
h_x = tf.matmul(h_x_s,W_) + b_ 
y_xi = tf.sigmoid(h_x) 

私のイメージは32x32x3のnumpyの配列である。この方法を計算しようとしているが、私はテンソルとして保存する方法を見つけるカントだからtf.matmulは動作します。私はいつも私の配列の適合しない形について誤りを得る。

# VARIABLES 
x= tf.placeholder(tf.float32,[32, 32, 3]) 
y_ = tf.placeholder(tf.float32,[32, 32, 3]) 

W = tf.Variable(tf.zeros([32,32,3])) 
b = tf.Variable(tf.zeros([32,32,3])) 

W_ = tf.Variable(tf.zeros([32,32,3])) 
b_= tf.Variable(tf.zeros([32,32,3])) 

(失敗TRY)

どのようにロード(およびデコード)する必要があり、私のイメージと私の変数とプレースホルダは、どのようなサイズをすべきですか?どんな助けでも大歓迎です!

感謝:)

答えて

2

念の誰も同じ問題があります。

だから、3D画像を2Dベクトルにすることができます。たとえば、イメージが(32,32,3)の場合、ベクトルは(1,32 * 32 * 3) - >(1、3072)でなければなりません。あなたは

2d_vec = original_3d_image.reshape(1,-1)

使用して、あなたが入力としてそれらを使用する前にデータを正規化することを忘れないでください

2d_vec.reshape(32,32,3)

を使用して戻って3Dにそれを回すことができることを行うことができます。あなたがしなければならないのは、あなたが何か質問がある場合はそう私に尋ねる前に、私は投稿のコードで多くのことを変更しました!

2d_vec = 2d_vec/max_value_of_2d_vec

です

-1

私はあなたがウェブサイトからTensorFlowのチュートリアルを試してみてくださいお勧めします。 TFではまずグラフを作成して実行し、さまざまな方法でPythonの情報をグラフにフィードできます。全ての

まず(3 RGBを意味=チャネル)decode_jpeg(data, channels = 3)を使用したり、画像の種類に応じて、他のデコーダ:

関連する問題