題目:出自書本中的一條練習題
編程解決下述非線性問題:
輸入資料:[1,1,1],輸出目標值:2
輸入資料:[1,0,1],輸出目標值:1
輸入資料:[1,2,3],輸出目標值:3
下面是我寫的代碼:
import tensorflow as tf
import numpy as np
rowCount=3
xData = np.array([
[1,1,1],
[1,0,1],
[1,2,3],])
xTrainData = [2,1,3]
x = tf.placeholder(dtype=tf.float32)
yTrain =tf.placeholder(dtype=tf.float32)
w = tf.Variable(tf.zeros([3]),dtype=tf.float32)
b = tf.Variable(1,dtype=tf.float32)
n = w * x
y =tf.reduce_sum(n) + b
loss = tf.abs(y-yTrain)
optimizer = tf.train.RMSPropOptimizer(0.001)
train = optimizer.minimize(loss)
sess = tf.Session()
sess.run( tf.global_variables_initializer())
for i in range(10000):
for j in range(rowCount):
result= sess.run([train,x,w,b,yTrain,y,loss],feed_dict={x:xData[j],yTrain:xTrainData[j]})
print(result)
課本說是非線性問題,我寫的是線性,y=wx+b,但是題目需要實作非線性,用sigmoid不能輸出2,1,3這些值啊,是能夠用其它的激活函式進行非線性(去線性化)嗎???
uj5u.com熱心網友回復:
不太明白,就3個樣本就想訓練出一個模型?這是個分類問題還是回歸問題,如果是分類問題,建議問主看看邏輯回歸的多分類問題,還得用sigmoid函式;如果是回歸問題,課本說不是線性的,意思是不是要用多項式回歸解決?
uj5u.com熱心網友回復:
我覺得這就是個非線性方程組,但不是分類問題,所以不用用到sigmoid函式來分類。xData = np.array([[1, 1, 1],
[1, 0, 1],
[1, 2, 3]])
yTrainData = np.array([2, 1, 3])
x = tf.placeholder(shape=[3], dtype=tf.float32)
yTrain = tf.placeholder(dtype=tf.float32)
w = tf.Variable(tf.zeros([3]), dtype=tf.float32)
b = tf.Variable(1, dtype=tf.float32)
n1 = x * w
n2 = tf.reduce_sum(n1) - b
y = n2
loss = tf.abs(y - yTrain)
optimizer = tf.train.RMSPropOptimizer(0.01)
train = optimizer.minimize(loss)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for i in range(1000):
for j in range(3):
result = sess.run([train, x, yTrain, w, b, n2, loss], feed_dict={x: xData[j], yTrain: yTrainData[j]})
print(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/159616.html
標籤:其他技術討論專區
