import tensorflow as tf
import numpy as np
data_num=40
x_data=np.linspace(-3,3,data_num)
y_data=np.sin(x_data)+np.random.uniform(-0.5,0.5,data_num)
#print(x_data)
x=tf.placeholder(dtype=tf.float32)
y=tf.placeholder(dtype=tf.float32)
y_pred=tf.Variable(tf.random_normal([1]),dtype=tf.float32)
for i in range(1,5):
#W=tf.Variable(tf.random_normal([1],dtype=tf.float32),name='weight_%d'%i)
W = tf.Variable(tf.random_normal([1],dtype=tf.float32), name='weight_%d' % i)
y_pred = tf.add(tf.multiply(tf.pow(x, i), W), y_pred)
loss = tf.reduce_sum(tf.pow(y_pred - y, 2)) / (data_num - 1)
train=tf.train.GradientDescentOptimizer(0.01).minimize(loss)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for epoch_i in range(1000):
for (x0, y0) in zip(x_data, y_data):
sess.run(train, feed_dict={x: x0, y: y0})
#print(x0,y0)
# print(sess.run(y_pred, feed_dict={x: x0, y: y0}))
training_cost = sess.run(
loss, feed_dict={x: x0, y: y0})
if epoch_i % 100 == 0:
print(training_cost)
正切曲线的拟合:一开始将data_num设置为10,结果loss一直增大到NAN。后来改了半天,才发现是数据量过少,需要把data_num设置为30以上。
正切曲线拟合
最新推荐文章于 2023-02-13 19:46:05 发布