运用tensorflow进行数据拟合
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
import numpy as np #导入多维数组操作库
import tensorflow as tf #引入tensorflow库
#data=np.genfromtxt('f:\milkdata.txt',delimiter=',')
#x_data=data[:,0]
#y_data=data[:,1]
x_data=np.genfromtxt("D:\mengniuchuli.txt",delimiter=" ")
y_data=np.genfromtxt("D:\mengniuchuli.txt",delimiter=" ")
#y=tf.add(tf.mul(a,tf.sin(tf.add(tf.mul(b,x_data*2*3.1415926/365),c))),d)
a = tf.Variable(0.1197)
b = tf.Variable(-0.541)
c = tf.Variable(7.634)
d = tf.Variable(3.096)
y = a * tf.sin(b * x_data/365*2*3.1415926 + c) +d #训练的函数
#opt = tf.train.GradientDescentOptimizer(0.5).minimize(loss)
#定义损失函数,定义优化器,训练器,再进行初始化
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.1) #定义一个梯度下降法来进行训练优化器
train = optimizer.minimize(loss) #训练最小代价函数,通过op来训练
init = tf.initialize_all_variables() #初始化变量,如果设置了tf.Variable就需要初始在会话中运行一下
sess = tf.Session() #创建一个会话session,在会话中使用option
sess.run(init) #运行初始化
for step in range(0, 1000000): #迭代1000000次
sess.run(train) #每次训练所给的训练集样本
if step % 100 == 0:
print(step,sess.run(a),sess.run(b),sess.run(c),sess.run(d),sess.run(loss))
sess.close()
spyder --reset