首页 > 解决方案 > 张量流中的回归

问题描述

只是想知道任何人都可以让我了解 tensorflow 中的回归代码。

我有下面的代码

import tensorflow as tf
import numpy
import matplotlib.pyplot as plt
rng = numpy.random

# Parameters
learning_rate = 0.01
training_epochs = 1000
display_step = 50

# Training Data
Y1, T1, X1 = numpy.genfromtxt('data7.csv', delimiter=',', usecols=(2,3,4), unpack=True, dtype=None)
train_X = X1
train_T = T1
train_Y = Y1
n_samples = train_X.shape[0]

# tf Graph Input
X = tf.placeholder("float")
T = tf.placeholder("float")
Y = tf.placeholder("float")

# Set model weights
a1 = tf.Variable(rng.randn(), name="weight1")
a2 = tf.Variable(rng.randn(), name="weight2")
a3 = tf.Variable(rng.randn(), name="weight3")
a4 = tf.Variable(rng.randn(), name="weight4")

# Construct a linear model
# pred = tf.add(tf.multiply(X, W), b)
hyp1 = tf.multiply(X, tf.add(a1,tf.add(tf.multiply(a2,X),tf.multiply(a3,tf.log(X)))))
hyp2 = tf.add(1.0, tf.multiply(a4, tf.add(T, -25.0)))
pow_ac_pred = tf.multiply(hyp1, hyp2)

# Mean squared error
cost = tf.reduce_sum(tf.pow(pow_ac_pred-Y, 2))/(2*n_samples)

# Gradient descent

optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

# Initialize the variables (i.e. assign their default value)
init = tf.global_variables_initializer()

# Start training
with tf.Session() as sess:

    # Run the initializer
    sess.run(init)

    # Fit all training data
    for epoch in range(training_epochs):
        for (x, y, t) in zip(train_X, train_Y, train_T):
            sess.run(optimizer, feed_dict={X: x, Y: y, T:t})

        # Display logs per epoch step
        if (epoch+1) % display_step == 0:
            c = sess.run(cost, feed_dict={X: train_X, Y:train_Y, T:train_T})
            print("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(c), \
                "a1=", sess.run(a1), "a2=", sess.run(a2), "a3", sess.run(a3), "a4", sess.run(a4))

    print("Optimization Finished!")
    training_cost = sess.run(cost, feed_dict={X: train_X, Y: train_Y, T:train_T})
    print("Training cost=", training_cost, "a1=", sess.run(a1), "a2=", sess.run(a2), \
          "a3", sess.run(a3), "a4", sess.run(a4), '\n')

我正在提供 X、Y 和 T 的数据。但是,每个时期的日志都给了我“nan”,这对我来说没有多大意义。该模型是通过使用太阳能模块的辐照和温度来预测太阳能电池板的交流功率。这些变量之间的关系在 此处输入图像描述 P_ac = G*(a1 + a2*G + a3 *log(G)) * (1 + a4*(Tm - 25)) 其中 p_ac 是功率输出,G 是辐照度和Tm 是模块温度。如果我完全错误地解决问题。谁能给我一个正确的方法来解决这个问题?谢谢

标签: pythontensorflowregressionlinear-regression

解决方案


推荐阅读