我尝试训练网络对文本进行分类。在入口处,我仅提交了0和1之间的向量。一切正常:) 注意,Compute返回一个负值向量,例如{0.56,-0.09,-0.01}。只能有一个负值,也可以只有几个负值或无。
我在做什么错了?
inputSize = 360
outputSize = 3
<select name="categoryID" >
<?php $catlist_sql="SELECT * FROM category";
$catlist_qry=mysqli_query($con, $catlist_sql);
$catlist_rs=mysqli_fetch_assoc($catlist_qry);
do { ?>
<option value="<?php echo $catlist_rs['categoryID']; ?>">
<?php echo $catlist_rs['name']; ?></option>
<?php } while ($catlist_rs=mysqli_fetch_assoc($catlist_qry));
?></select>
Encog版本3.4.0
答案 0 :(得分:0)
您的网络创建本身很好,尽管建议隐藏层中的神经元数量至少为一半,并且您可能会看到更高的精度(Bayramet等,2013)。
负值通常是造成网络不准确的原因,在训练网络时,您会看到均方误差(MSe),确保获得最低误差的一种好方法是:
//Train network on data set, parameters (Network, dataset, learning rate, momentum).
IMLTrain learner = new Backpropagation(EncogNetwork, data, lr, mom);
double lastError = double.PositiveInfinity;
//Training loop while error is decreasing by 0.0000001 or more every 1000 iterations.
do
{
//Set last error as error if the network has trained before.
if (learner.Error != 0)
{
lastError = learner.Error;
}
//Do 1000 learning iterations.
int i = 0;
while (i < 1000)
{
learner.Iteration();
i++;
}
} while (lastError - learner.Error > 0.0000001);
double error = learner.Error;
1.2中的错误很可能会产生差的结果。您还应该尝试学习速度和动力,以帮助降低误差。
在计算时,如果输入的值不正确或不相关,则很容易获得负输出。您所提供的信息量就是我所说的全部。