我想弄清楚如何解决基本的张量流问题。我希望能够设计和训练一个能够区分我和我的家庭成员的模型。所以,我为每个家庭成员提供了大约100个带标签的图像。 (1是我,2是我的麻烦等等)
在训练之后,如果我为模型提供不同的图像,我想预测该图片中的人是否是家庭成员(EG:1的结果应该指出被喂食图像中的人是我,“2”是我的兄弟等等。我不知道如何处理这个问题。我开始创建一个具有3个隐藏层(每个100个神经元)的前馈神经网络。作为输入,我分批为10件装入NN图像。 输入图层由73984组成(因为我的图像是272x27x灰度图片)。每层的激活功能为reLU,学习率为0.001,输出层为下面的“y”变量。
x = tf.placeholder(tf.float32, shape=(None, 73984)) #input
y = tf.placeholder(tf.float32, shape=(None, 1)) #output
所有图像都被标记并加载到系统中并送入NN。
这是一个好方法吗?我m not sure that I
选择了正确数量的输出神经元,因为不止一个人参与了结果。
此外,如果我运行10个时代的训练,成本也很不清楚(因为它从一个时期到另一个时期不同):
Epoch: 1 cost = 1704869.83786
Epoch: 2 cost = 122763.82891
Epoch: 3 cost = 179394.59451
Epoch: 4 cost = 562933.02995
Epoch: 5 cost = 496258.06337
Epoch: 6 cost = 109202.11328
Epoch: 7 cost = 107059.53917
Epoch: 8 cost = 34747.37408
Epoch: 9 cost = 95627.10324
Epoch: 10 cost = 122551.38151
当我尝试使用测试图像预测准确度时,我就是这样做的:
correct_prediction = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print("accuracy: %r" % sess.run(accuracy, feed_dict={x: test_x, y: test_y}))
但似乎存在问题,因为每次显示1.0的值。我在这里做错了什么?
PS:我知道输入数据真的很低(图像数量),我知道卷积NN是一个更好的方法,但只是为了学习,我选择了这种方法。