正切曲线拟合

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以上。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值