用tensorflow解决:输入一串数字,对应一串输出求解方程的问题

tensorflow初探
输入一串数字【1,3,5,7,9】
对应的输出是【2,10,26,50,82】
用一个包含两个隐藏层的非线性全连接神经网络来实现。

import tensorflow as tf 

首先引入tf库

learnRateT = 0.001

设定学习率为0.001

xData = [1,3,5,7,9]
yTrainData = [2,10,26,50,82]
x = tf.placeholder(dtype = tf.float32)
yTrain = tf.placeholder(dtype = tf.float32)
w1 = tf.Variable(tf.ones([1,6]),dtype = tf.float32)
b1 = tf.Variable(0,dtype = tf.float32)
n1 = tf.nn.tanh(tf.matmul(tf.reshape(x,[1,1]),w1)+b1)
w2 = tf.Variable(tf.ones([6,1]),dtype = tf.float32)
b2 = tf.Variable(0,dtype = tf.float32)
n2 = tf.matmul(n1,w2) + b2
y = tf.reduce_sum(n2)

将方程中的各个参数进行定义,
其中x,yTrain为张量
而 w1,b1,w2,b2为可变参数

loss = tf.abs(y - yTrain)
Optimizer = tf.train.GradientDescentOptimizer(learnRateT)
train = Optimizer.minimize(loss)
sess = tf.Session()
sess.run(tf.global_variables_initializer())

定义loss函数
并采用GradientDescentOptimizer普通梯度下降法进行迭代

for i in range(1000000):
    lossSum = 0
    for j in range(5):
        result = sess.run([train,x,w1,b1,y,yTrain,loss],feed_dict= {x:xData[j],yTrain:yTrainData[j]})
        print(result)

        lossSum = lossSum + float(result[-1])
        avgloss = lossSum/5
        print("i:%d,avgloss:%10.10f"%(i,avgloss))

介于笔记本的能力,循环1000次,求解
结果如下:
用tensorflow解决:输入一串数字,对应一串输出求解方程的问题_第1张图片

你可能感兴趣的:(用tensorflow解决:输入一串数字,对应一串输出求解方程的问题)