Tensorflow 波士顿教程中的张量流发散损失

Tensorflow 波士顿教程中的张量流发散损失,tensorflow,linear-regression,Tensorflow,Linear Regression,我真的被这个特殊的例子绊住了。因此,我想知道是否有人面临同样的问题。是我遇到问题的教程页面。当我执行时回归器.train(input\u fn=get\u input\u fn(training\u set),步长=5000)行,损失呈指数发散。因此,我在最后得到的权重不会产生现实的预测。由于整个示例处于原样的状态,因此我无法干预该过程 当我用Theta=pinv(X'*X)*X'*y应用正态方程时,我用Theta进行的预测是: [33.624 17.714 21.796 33.601

我真的被这个特殊的例子绊住了。因此,我想知道是否有人面临同样的问题。是我遇到问题的教程页面。当我执行时<代码>回归器.train(input\u fn=get\u input\u fn(training\u set),步长=5000)行,损失呈指数发散。因此,我在最后得到的权重不会产生现实的预测。由于整个示例处于原样的状态,因此我无法干预该过程

当我用
Theta=pinv(X'*X)*X'*y
应用正态方程时,我用
Theta
进行的预测是:

[33.624  17.714  21.796  33.601  12.852  19.621]
本教程中提出的正确结果是:

[33.30348587  17.04452896  22.56370163  34.74345398  14.55953979   19.58005714]
似乎正态方程产生了几乎正确的输出。我设计了我自己的模型,它只包含一个神经元,损失仍然和教程模型一样分散。然后我应用均值归一化和特征缩放,使损失收敛到局部极小值。但是当我将权重与预测集相乘时,它产生了没有意义的负面结果

我的问题是,我如何解决这个问题

编辑:以下是代码:

training_set = csvread('boston_train.csv');
training_set = training_set(2:end,:);
training_set = training_set(:,1:10);
首先修剪第一行,因为它包含无意义的数据。并修剪最后2列,其中仅包含未存储在csv文件中的0。可能是
csvread
功能的一个小问题

y = training_set(:,10);
X = training_set(:,1:9);
提取输出和特征

m = size(X,1);
X_norm = featureNormalize(X);
X = [ones(m,1) X_norm];
Theta = zeros(n,1); # Zero initialize the weight vector.
alpha= 0.01; # Learning rate.
采用特征缩放和均值归一化

[Theta,losses]= gradientDescent(X, y, Theta, alpha, 5000);
fprintf('Final Loss computed = %f\n', losses(end));
损失约为16.551243

predict_set = csvread('boston_predict.csv');
predict_set = predict_set(:,1:9);
predict_set= predict_set(2:end,:);
ps_size = size(predict_set,1);
predict_set=[ones(ps_size,1) predict_set];
对predict_集进行一些预处理以去除冗余值

predictions = predict_set * Theta
结果向量为:

  57.254
 -96.769
 -39.343
 -10.582
 -111.768
 -88.005