Tensorflow 구덩이 밟기
5153 단어 numpytensorflow학습 노트
옛날에 어떤 아이가 TF를 공부하고 있었어요. 처음에 논리 회귀의 최적화 프로그램을 썼어요.
import tensorflow as tf
import numpy as np
x=tf.placeholder("float")
y=tf.placeholder("float")
w=tf.Variable([1.0,2.0],name='w')
y_pred=tf.mul(x,w[0])+w[1]
error=tf.square(y-y_pred)
train_op=tf.train.GradientDescentOptimizer(0.02).minimize(error)
model=tf.initialize_all_variables()
with tf.Session() as session:
session.run(model)
for i in range(1000):
x_value=np.random.rand()
y_value=x_value*2+6
session.run([train_op],feed_dict={x:x_value,y:y_value})
w_value=session.run(w)# get w
print "ax+b,a=%.3f,b=%.3f"%(w_value[0],w_value[1])
이 함수는 결과를 출력하기 위해 잘 작동합니다.
ax+b,a=2.057,b=5.965
나중에 이 아이는 오차를 그림으로 그려서 자신의 성과를 보려고 리스트 errors를 추가해서 매번 출력을 저장하고 실행할 때 매번 error 값이 바뀐 곳을 출력한다.
errors=[]
with tf.Session() as session:
session.run(model)
for i in range(1000):
x_value=np.random.rand()
y_value=x_value*2+6
_,error=session.run([train_op,error],feed_dict={x:x_value,y:y_value})#
errors.append(error) #
결과, 실행 중 오류 보고: TypeError!마지막으로 찾은 근원은 error 입력입니다:np입니다.float 유형, must be a string or Tensor for operation 입니다. 그렇지 않으면 이 작업을 수행할 수 없습니다.아이는 바로 입력을 바꾸어 아래와 같이 해서 문제가 없을 줄 알았다.
x_value=tf.random_normal((1,),mean=5,stddev=2.0)
결과 오류: TypeError: The value of a feed cannot be a tf.Tensor object. Acceptable feed values include Python scalars, strings, lists, or numpy ndarrays.피드의 입력이 하나의 텐서가 될 수 없다는 뜻입니다!이 아이의 마음은 사실 붕괴되었다!!!!!!방금 np 포맷을 바꿨는데, 어렵게도 또 바꾸려고 합니까?다시 돌아가면 틀림없이 아까의 잘못을 보고할 것이다. 그래서 아이는 이렇게 고쳤다.
with tf.Session() as session:
session.run(model)
for i in range(1000):
# x_value=np.random.rand() #TypeError,must be a string or Tensor for operation
x_value=tf.random_normal((1,),mean=5,stddev=2.0)
y_value=x_value*2+6
x_r,y_r=session.run([x_value,y_value])
_,error_value=session.run([train_op,error],feed_dict={x:x_r,y:y_r})
# error_value=session.run(error) can't work
errors.append(error_value)
print type(x_r)
w_value=session.run(w)# get w
print "ax+b,a=%.3f,b=%.3f"%(w_value[0],w_value[1])
import matplotlib.pyplot as plt
plt.plot([np.mean(errors[i-50:i]) for i in range(len(errors))])
plt.show()
plt.savefig("errors.png")
마침내 정상 출력값은 ax+b, a=2.004, b=5.979
Tips: , tf numpy ndarray tensor, tf.convert_to_tensor(), , ndarray
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
chainer의 connection을 괴롭히고 새로운 층을 만든다 (1)GPU GTX1070 우분투 14.04 chainer 1.14.0 chainer에서 최신 모델을 구현할 때는 links/connection이나 functions/connection을 괴롭힐 필요가 있다. 그래서 가장...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.