Как реализовать оставшиеся «для цикла» в этой нейронной сети в TensorFlow - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь запустить нейронную сеть в TensforFlow. Набор данных представляет собой просто длину и ширину цветочного лепестка, и результат может быть либо 1/0 в зависимости от типа:

x = [[3,1.5],
     [2,1],
     [4,1.5],
     [3,1],
     [3.5,0.5],
     [2,0.5],
     [5.5,1],
     [1,1]]

y = [1,
     0,
     1,
     0,
     1,
     0,
     1,
     0]

Пока мой код выглядит примерно так:

определить переменные

x_1 = tf.placeholder(tf.float32, shape=[8,2])
y_1 = tf.placeholder(tf.float32, shape=[8])

w_1 = tf.placeholder(tf.float32, shape=[2,8])
b_1 = tf.placeholder(tf.float32, shape=[8,])

sess = tf.Session()

sess.run(tf.global_variables_initializer())

y_ = tf.matmul(x_1,w_1) + b

sigmoid = tf.nn.sigmoid(y_)

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(sigmoid)

for _ in range(50000):

Мой вопрос заключается в том, как мне организовать цикл «так», чтобы он сразу брал весь набор данных и сравнивал его с фактическим выводом? Набор данных mnist для tenorflow использует кросс-энтропию softmax, благодаря которой вы можете указать фактический и прогнозируемый выход в параметрах функции. Однако в этом простом наборе данных, как бы я повторил то же самое в оставшемся цикле for, чтобы код захватил все данные, сделал прогноз и сравнил его с фактическим выводом? Также, пожалуйста, укажите, есть ли проблемы с формой моих переменных, спасибо.

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Решите, что я искал:

import tensorflow as tf
import numpy as np

train_X = np.asarray([[3,1.5],[2,1],[4,1.5],[3,1],[3.5,0.5],[2,0.5],[5.5,1],[1,1]])
train_Y = np.asarray([[1],[0],[1],[0],[1],[0],[1],[0]])

x = tf.placeholder("float",[None, 2])
y = tf.placeholder("float",[None, 1])

W = tf.Variable(tf.zeros([2, 1]))
b = tf.Variable(tf.zeros([1, 1]))

activation = tf.nn.sigmoid(tf.matmul(x, W)+b)
cost = tf.reduce_mean(tf.square(activation - y))
optimizer = tf.train.GradientDescentOptimizer(.2).minimize(cost)

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for i in range(50000):
        train_data = sess.run(optimizer, feed_dict={x: train_X, y: train_Y})

    result = sess.run(activation, feed_dict={x:train_X})
    print(result)
0 голосов
/ 30 апреля 2018

Вы знаете, вы можете просто использовать tflearn. Сэкономь много времени и разочарований =)

import tflearn
from tflearn.layers.core import fully_connected,input_data
from tflearn.layers.estimator import regression

model = input_data(shape=[None,4,1])
model = fully_connected(model,1,activation='sigmoid')
model = regression(model)
model = tflearn.DNN(model)
model.fit(X_inputs=trainX,Y_targets=trainY,n_epoch=20,
          validation_set=(testX,testY),show_metric=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...