2016-10-09 6 views
7

私はテンソルフローの初心者です。テンソルフローの論理を学ぶためには、公式のMNISTサンプルコードから始めます。しかし、私が気にしていないことの1つは、MNISTの例では元のデータセットをいくつかの圧縮ファイルとして提供しています。その形式は初心者には分かりません。このケースでは、データセットをバイナリファイルとして提供するCifar10も使用されています。私は実践的な深い勉強の仕事で、私たちのデータセットは、*.jpgまたは*.pngのような多くの画像ファイルであり、各ファイルのラベル(ImageNetデータセットのような)を記録したテキストファイルもあります。例としてMNISTを使ってみましょう。Tensorflowでトレーニング用のデータセットとしてディレクトリに画像ファイルをロード

MNISTには、サイズが28 x 28の50kトレーニングイメージが含まれています。これらの画像がjpg形式であり、ディレクトリ./dataset/に保存されていると仮定しましょう。

label.txtはこのようなものです
/path/to/dataset/ 
       image00001.jpg 
       image00002.jpg 
       ... ... ... ... 
       image50000.jpg 
       label.txt 

#label.txt: 
image00001.jpg 1 
image00002.jpg 0 
image00003.jpg 4 
image00004.jpg 9 
... ... ... ... 
image50000.jpg 3 

今、私は単層モデルを訓練するためにTensorflowを使用したい./dataset/では、我々は、各画像のラベルを格納したテキストファイルlabel.txtを持っていますこれらのデータセット。誰かが簡単なコードスニペットを与えるのを助けることができますか?

答えて

3

基本的に2つ必要なことがあります。

import numpy as np 
from scipy import misC# feel free to use another image loader 

def create_batches(batch_size): 
    images = [] 
    for img in list_of_images: 
    images.append(misc.imread(img)) 
    images = np.asarray(images) 

    #do something similar for the labels 

    while (True): 
    for i in range(0,total,batch_size): 
     yield(images[i:i+batch_size],labels[i:i+batch_size]) 

は今tensorflow部分

imgs = tf.placeholder(tf.float32,shape=[None,height,width,colors]) 
lbls = tf.placeholder(tf.int32, shape=[None,label_dimension]) 

with tf.Session() as sess: 
#define rest of graph here 
# convolutions or linear layers and cost function etc. 


    batch_generator = create_batches(batch_size) 
    for i in range(number_of_epochs): 
    images, labels = batch_generator.next() 
    loss_value = sess.run([loss], feed_dict={imgs:images, lbls:labels}) 
に来る:最初は通常のPythonコードのようなものですので、
関連する問題