1
を解決する...私はTensorflowと、次のような問題では「ワット」の値を解決しようとしている:Tensorflowは:マトリックスに変数を埋め込み、タイトルは非常に明確でない場合は申し訳ありませんが
Y = X*B(w) + e
Yは、22x5行列であり、Xは、22x3行列であり、Bは(W)は、以下の構造を有する3×5マトリックスである:
B = [[1, 1, 1, 1, 1],
[exp(-3w), exp(-6w), exp(-12w), exp(-24w), exp(-36w)],
[3*exp(-3w), 6*exp(-6w), 12*exp(-12w), 24*exp(-24w), 36*exp(-36w)]]
ここに私のコードは次のとおり
# Parameters
learning_rate = 0.01
display_step = 50
tolerance = 0.0000000000000001
# Training Data
Y_T = df.values
X_T = factors.values
X = tf.placeholder("float32", shape = (22, 3))
Y = tf.placeholder("float32", shape = (22, 5))
w = tf.Variable(1.0, name="w")
def slope_loading(q):
return tf.exp(tf.multiply(tf.negative(q),w))
def curve_loading(q):
return tf.multiply(w,tf.exp(tf.multiply(tf.negative(q),w)))
B = tf.Variable([[1.0, 1.0, 1.0, 1.0, 1.0],
[slope_loading(float(x)) for x in [3, 6, 12, 24, 36]],
[curve_loading(float(x)) for x in [3, 6, 12, 24, 36]]])
pred = tf.matmul(X,B)
cost = tf.matmul(tf.transpose(Y-pred), (Y-pred))/22
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
# Initializing the variables
init = tf.global_variables_initializer()
# Launch the graph
with tf.Session() as sess:
# Set initial values for weights
sess.run(init)
# Set initial values for the error tolerance
tol = abs(sess.run(cost, feed_dict={X: X_T, Y: Y_T})[0][0])
iteration = 0
while tol > tolerance:
c_old = sess.run(cost, feed_dict={X: X_T, Y: Y_T})[0][0]
sess.run(optimizer, feed_dict={X: X_T, Y: Y_T})
c_new = sess.run(cost, feed_dict={X: X_T, Y: Y_T})[0][0]
tol = abs(c_new - c_old)
iteration = iteration + 1
if iteration % display_step == 0:
print("Iteration= ", iteration, "Gain= ", tol)
training_cost = sess.run(cost, feed_dict={X: X_T, Y: Y_T})
しかし、私はエラー "FailedPreconditionError(上記のトレースバック参照)を取得しています:初期化されていない値を使用しようとしています..."
私はこれがBの構築方法と関係していると推測していますコスト関数に沿って、私は間違って何をしているか見るためにTensorflowにはあまりにも新しいです。
助けが必要ですか?
私はこれを修正できます。今すぐそれに取り組む。 – Aaron