현재 Tensorflow를 사용하여 회귀 문제를 해결하는 방법을 이해하려고합니다. 불행히도, 입력 데이터에 대해 두 번째 차원을 도입하자마자 오류나 손실이 엄청나게 커집니다.회귀 운동에 중대한 오류가 발생했습니다.
내가 사용중인 데이터 세트는 자체 제작되었으며 매우 간단합니다. 값은 모든 정렬 및 X2는 I는 선형 회귀를 사용하여 값을 근사하려고 + 1
X1 = [2.167,3.1,3.3,4.168,4.4,5.313,5.5,5.654,6.182,6.71,6.93,7.042,7.59,7.997,9.27,9.779,10.791]
X2 = [3.167,4.1,4.3,5.168,5.4,6.313,6.5,6.654,7.182,7.71,7.93,8.042,8.59,8.997,10.27,10.779,11.791]
y = [1.221,1.3,1.573,1.65,1.694,1.7,2.09,2.42,2.53,2.596,2.76,2.827,2.904,2.94,3.19,3.366,3.465]
X1에서 단마다 값이된다 :이 나에게 출력을 제공
numbers = pd.DataFrame({'x1': X1, 'x2':X2})
X_train, X_test, y_train, y_test = train_test_split(numbers,y,test_size=0.3,random_state=101)
X_data = tf.placeholder(shape=[None,2], dtype=tf.float32)
y_target = tf.placeholder(shape=[None], dtype=tf.float32)
w1 = tf.Variable(tf.random_normal(shape=[2,1]))
b1 = tf.Variable(tf.random_normal(shape=[1]))
final_output = tf.add(tf.matmul(X_data, w1), b1)
loss = tf.reduce_sum(tf.square(final_output-y_target))
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1)
train = optimizer.minimize(loss)
init = tf.global_variables_initializer()
steps = 5000
with tf.Session() as sess:
sess.run(init)
for i in range(steps):
sess.run(train,feed_dict={X_data:X_train,y_target:y_train})
# PRINT OUT A MESSAGE EVERY 100 STEPS
if i%500 == 0:
print('Currently on step {}'.format(i))
training_cost = sess.run(loss, feed_dict={X_data:X_test,y_target:y_test})
print("Training cost=", training_cost/5)
training_cost = sess.run(loss, feed_dict={X_data:X_test,y_target:y_test})
print("Training cost=", training_cost)
을
Currently on step 0
Training cost= 12376958566.4
Currently on step 500
Training cost= nan
Currently on step 1000
Training cost= nan
Currently on step 1500
Training cost= nan
Currently on step 2000
Training cost= nan
Currently on step 2500
Training cost= nan
Currently on step 3000
Training cost= nan
Currently on step 3500
Training cost= nan
Currently on step 4000
Training cost= nan
Currently on step 4500
Training cost= nan
Training cost= nan
Adagrad 최적화 도구로 약간의 결과를 얻었지만 5라는 오류를주었습니다.하지만 더 많은 가능성이 있어야한다고 생각합니다.
숨겨진 레이어를 추가하려면 여기 옵션을 사용 하시겠습니까? 나는 이전에도 이것을 시도했지만 레이어에서 활성화 기능으로 relu를 사용하고 출력 레이어에 단지 f(x)=x
을 사용하는 동안 비슷한 높은 나노 오류를 받았습니다.
학습 속도의 문제인 것 같습니다. 'optimizer = tf.train.GradientDescentOptimizer (learning_rate = 5e-5)'시도해보십시오. – user2015762