tensorflowのeval()について
画像に対するCNNのプログラムを勉強中で,model
関数で畳み込みを行うのですが、pred
を
result = self.pred.eval({self.images: train_data, self.labels: train_label})
で走らせています.このeval()
はmodel
関数にtrain_data
とtrain_label
の画像データを渡していると思うのですが,model
関数では畳み込みにself.images
のtrain_data
しか使用していません.なぜ、train_label
も渡しているのでしょうか.
ここでの処理は、一通りトレーニングを終えて、サンプル画像を用いてどのくらいの精度かテストしている処理です。
tranin_data
はトレーニングデータで、train_label
は正解データを別の関数でデータセットとして作成しています.
def train(self, config):
train_data, train_label = read_data(data_dir)
self.train_step = tf.train.GradientDescentOptimizer(config.learning_rate).minimize(self.mse)
tf.initialize_all_variables().run()
self.pred = model()
def model(self):
conv1 = tf.nn.relu(tf.nn.conv2d(self.images, self.weights['w1'], strides=[1,1,1,1], padding='VALID') + self.biases['b1'])
conv2 = tf.nn.relu(tf.nn.conv2d(conv1, self.weights['w2'], strides=[1,1,1,1], padding='VALID') + self.biases['b2'])
conv3 = tf.nn.conv2d(conv2, self.weights['w3'], strides=[1,1,1,1], padding='VALID') + self.biases['b3']
return conv3