2016-09-29 9 views
0

他の主流の深い学習フレームワークでベンチマークを行うために、テンソルフローでsoftmax回帰モデルを実装しようとしています。テンソルフローのfeed_dict issueのため、公式のドキュメントコードが遅いです。テンソルフロー定数としてデータを提供しようとしていますが、これを行う最も効率的な方法はわかりません。今のところ私は単バッチを定数として使用し、そのバッチを通して訓練しました。そのコードのミニバッチ化されたソリューションを作る効率的なソリューションは何ですか?ここに私のコードです:テンソルフローにおける高速softmax回帰の実装

from tensorflow.examples.tutorials.mnist import input_data 

import tensorflow as tf 
import numpy as np 

mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True) 
batch_xs, batch_ys = mnist.train.next_batch(100) 

x = tf.constant(batch_xs, name="x") 
W = tf.Variable(0.1*tf.random_normal([784, 10])) 
b = tf.Variable(tf.zeros([10])) 
logits = tf.matmul(x, W) + b 

batch_y = batch_ys.astype(np.float32) 
y_ = tf.constant(batch_y, name="y_") 

loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits, y_)) 
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(loss) 
.... 
# Minitbatch is never updated during that for loop 
for i in range(5500): 
    sess.run(train_step) 

答えて

0

ちょうど次のとおりです。

from tensorflow.examples.tutorials.mnist import input_data 

import tensorflow as tf 
import numpy as np 

batch_size = 32 #any size you want 

mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True) 


x = tf.placeholder(tf.float32, shape = [None, 784]) 
y = tf.placeholder(tf.float32, shape = [None, 10]) 

W = tf.Variable(0.1*tf.random_normal([784, 10])) 
b = tf.Variable(tf.zeros([10])) 

logits = tf.matmul(x, W) + b 

loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits, y)) 
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(loss) 
.... 
# Minitbatch is never updated during that for loop 
for i in range(1000): 
    batch_xs, batch_ys = mnist.train.next_batch(batch_size) 
    l, _ = sess.run([loss, train_step], feed_dict = {x: batch_x, y: batch_ys}) 
    print l #loss for every minibatch 

図形[なし、784]は、[[、784]の図形の任意の値を入力できます。

私はこのコードをテストしていませんが、うまくいくと思います。

関連する問題