簡體   English   中英

XOR MULTILAYER PERCEPTRON:如何將訓練數據的子集作為參數傳遞以得到預測值

[英]XOR MULTILAYER PERCEPTRON: how can one pass a subset of the training data as an argument to get there prediction value

#imports
import tensorflow as tf
#Variables
hidden_layer1_node= 2
hidden_layer2_node= 1


X = tf.placeholder('float',[8,3])
Y = tf.placeholder('float',[8,1])

#neural model
def neural_model(x):
layer1_weight = {'weight':tf.Variable(tf.random_normal([3,hidden_layer1_node])),
                'bias':tf.Variable(tf.zeros([hidden_layer1_node]))}

layer2_weight = {'weight':tf.Variable(tf.random_normal([2,hidden_layer2_node])),
                'bias':tf.Variable(tf.zeros([hidden_layer2_node]))}


zl1 = tf.add(tf.matmul(x,layer1_weight['weight']), layer1_weight['bias'])
prediction1 = tf.sigmoid(zl1)

zl2 = tf.add(tf.matmul(prediction1,layer2_weight['weight']), layer2_weight['bias'])
return tf.sigmoid(zl2)

prediction = neural_model(X)


#cost function
def cost_function():
loss = tf.reduce_mean(-1*((Y*tf.log(prediction))+((1-Y)*tf.log(1.0-prediction))))
return loss

#Optimization
loss = cost_function()
training = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

#training stage
train_x = [[0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1]]
train_y = [[0],[1],[1],[0],[1],[0],[0],[1]]
epoch = 10

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())

    for i in range(epoch):
        for _ in range(5000):
            sess.run(training, feed_dict={X:train_x,Y:train_y})

        print(sess.run(loss,feed_dict={X:train_x,Y:train_y}))
    print(sess.run(prediction,feed_dict={X:train_x,Y:train_y}))

根據訓練后的網絡模型(假設一個人理解),您如何不但可以傳遞[8,3]的張量,還可以傳遞[1,3]的[0,0,1]之類的東西。 我想我要改一下我的問題。

不幸的是,TensorFlow不允許更改圖,這意味着要求輸入(和中間)張量具有恆定的大小。 為了區分訓練和測試,您可以按照以下說明使用共享變量: https : //www.tensorflow.org/guide/variables#sharing_variables

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM