

画像に対するCNNのプログラムを勉強中で，`model`関数で畳み込みを行うのですが、`pred`を

[code]

    result = self.pred.eval({self.images: train_data, self.labels: train_label})
    
[/code]

で走らせています．この`eval()`は`model`関数に`train_data`と`train_label`の画像データを渡していると思うのですが，`model`関数では畳み込みに`self.images`の`train_data`しか使用していません．なぜ、`train_label`も渡しているのでしょうか．

ここでの処理は、一通りトレーニングを終えて、サンプル画像を用いてどのくらいの精度かテストしている処理です。  
`tranin_data`はトレーニングデータで、`train_label`は正解データを別の関数でデータセットとして作成しています．

[code]

    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
    
[/code]


CC BY-SA 3.0
2017-11-02T07:57:55.713
39249
2018-12-09T07:02:20.440
2017-11-02T15:09:32.790
19110
26014
question
python tensorflow
tensorflowのeval()について


> なぜ、train_labelも渡しているのでしょうか．

eval(evaluate)関数は、モデルの精度をはかる関数ですから、データとその正解レベルを与えないといけないのは当たり前ですよね。正解を与えなければ、モデルがその問題を当てたのかどうか判断できませんから。


CC BY-SA 3.0
2017-11-03T01:57:59.627
39260
2017-11-03T01:57:59.627
12274
39249
answer