Python 如何实施剩余的';对于循环';在张量流中的神经网络

Python 如何实施剩余的';对于循环';在张量流中的神经网络,python,for-loop,tensorflow,neural-network,gradient-descent,Python,For Loop,Tensorflow,Neural Network,Gradient Descent,我正试图让神经网络在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

我正试图让神经网络在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):

我的问题是如何安排“for”循环,以便它一次获取整个数据集并将其与实际输出进行比较?tensorflow上的mnist数据集使用softmax交叉熵,因此可以在函数的参数中指定实际输出和预测输出。然而,在这个简单的数据集中,我如何在剩余的for循环中复制相同的数据,以便代码获取所有数据并进行预测,并将其与实际输出进行比较?另外,请说明我的变量的形状是否有任何问题,谢谢

你知道,你可以用tflearn。节省大量时间和挫折=)


设法解决我正在寻找的问题:

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)

到目前为止,您正在尝试最小化神经网络的输出。如果你想让你的输出与y相匹配(也就是基本事实)作为第一步,您可能应该尝试最小化表示输出和y之间差异的成本。此外,如果您想最小化某些内容,则不应使用占位符,而应使用变量。长话短说,您最好仔细阅读一步一步的教程。您是否建议您在不使用mnist数据集对于开始使用低级API来说非常好,它使用iris数据集(这与您似乎正在使用的数据集相同)。我认为这里的重点是了解引擎盖下发生的事情,并学习如何使用Tensorflow低级API。
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)