我正在开发一个应该能够即时学习新课程的网络。这意味着在训练期间输出类的数量会增加。为此,一旦新类出现一个节点,我就会重新初始化网络的最后一层。一切运作良好,最后一层在训练期间增大。我现在遇到的问题是每当出现一个超出初始范围的新标签时tf.nn.sparse_softmax_cross_entropy_with_logits会抛出此错误:
“收到的标签值为7,超出有效范围[0,7]。标签值:0 6 5 2 0 2 1 6 4 2 6 4 3 4 5 7 5 7 1 4 5 4 6 1 1 6 7 6 7 5 6 3 4 0 7 0 0 1 7 3 1 2 4 3 2 7 3 3 4 7 0 0 7 3 6 5 0 3 0 7 2 2 2 3 2 2 0 7 2 3 4 2 2 6 0 3 6 5 4 1 6 5 0 6 1 7 4 7 7 2 3 0 5 6 3 7 1 1 1 0 0 3 7 6 5 1 4 6 0 0 4 7 1 0 3 0 1 4 4 6 1 0 6 6 2 3 0 7 2 7 6 2 7 0 2 6 1 5 2 7 6 4 6 6 7 5 2 2 0 7 6 7 7 4 1 7 3 5 2 5 2 3 7 6 2 0 3 6 7 6 5 3 5 4 4 7 5 7 5 7 6 3 6 5 4 4 7 7 1 0 4 3 7 5 6 2 7 2 3 0 “
我正在测试CIFAR-10数据集并开始训练6个班级。添加第7个类后,最后一个层的大小为[batchsize,8]但是tf.nn.sparse_softmax_cross_entropy_with_logits现在无法识别出还有另一个输出节点。当我只是增加最后一层而不向输入批次添加新类时,一切正常。是否有某种技巧告诉tf.nn.sparse_softmax_cross_entropy_with_logits numClasses已经增加?