XOR MULTILAYER PERCEPTRON: как можно передать подмножество обучающих данных в качестве аргумента, чтобы получить там значение прогнозирования - PullRequest
0 голосов
/ 02 сентября 2018
#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 ] или что-то. Я думаю, я перефразирую свой вопрос.

1 Ответ

0 голосов
/ 02 сентября 2018

К сожалению, TensorFlow не позволяет изменять график, это означает, что входные (и промежуточные) тензоры должны иметь постоянный размер. Чтобы различать обучение и тестирование, вы можете использовать общие переменные, как описано здесь: https://www.tensorflow.org/guide/variables#sharing_variables

...