Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tensorflow:将numpy数据数组提供给占位符时无效arguminterror_Python_Tensorflow_Types_Feed_Placeholder - Fatal编程技术网

Python Tensorflow:将numpy数据数组提供给占位符时无效arguminterror

Python Tensorflow:将numpy数据数组提供给占位符时无效arguminterror,python,tensorflow,types,feed,placeholder,Python,Tensorflow,Types,Feed,Placeholder,我想运行一个由3个输入“神经元”(具有三个特征:身高、体重、体脂)和2个输出“神经元”组成的简单神经网络,通过softmax logistic回归将新数据分类为男性或女性)。我制作这些数据只是为了练习输入到模型中的数据。就像tensorflow网站上的MNIST教程一样,但更简单、更具体(不是784个输入功能——给定MNIST图像的所有像素——我只有3个,而不是几批来训练我们的模型,我只想在相同的数据中训练几次) 我知道这可以通过更简单的算法来实现,比如k-means聚类。但我只想学习如何在数据

我想运行一个由3个输入“神经元”(具有三个特征:身高、体重、体脂)和2个输出“神经元”组成的简单神经网络,通过softmax logistic回归将新数据分类为男性或女性)。我制作这些数据只是为了练习输入到模型中的数据。就像tensorflow网站上的MNIST教程一样,但更简单、更具体(不是784个输入功能——给定MNIST图像的所有像素——我只有3个,而不是几批来训练我们的模型,我只想在相同的数据中训练几次)

我知道这可以通过更简单的算法来实现,比如k-means聚类。但我只想学习如何在数据很小的时候输入数据

我明白了:

InvalidArgumentError:必须为占位符张量提供值lue 带有dtype float的“占位符”

我不知道为什么。。。因为我已经将列表值转换为np.float32(与tf.float32相同),并在定义函数之前检查它。然而,我还是犯了这个恼人的错误。无论我改变什么,当加载到第一个palceholder:X时,我总是会遇到这个错误

这是我的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import numpy as np
import tensorflow as tf
import time

    #TRAINING DATA  


        #3 VIs en columna

                    #est, pes, %gb_fat
persones = np.asarray([[175,70,2],   #H
                       [155,45,15],  #F 
                       [190,85,8],   #H
                       [185,90,7],   #H
                       [169,60,3],   #H
                       [150,40,13],  #F
                       [173,69,12]], dtype = np.float32)  #H

                        # H , D --> one-hot!! 
etiquetes = np.asarray([[1,0],
                        [0,1],
                        [1,0],
                        [1,0],
                        [1,0],
                        [0,1],
                        [1,0]], dtype = np.float32)


#TESTING DATA
persones_evaluacio = np.asarray([[190,89,4], #H
                                [155,52,16], #D
                                [171,55,18]], dtype = np.float32) #D

etiquetes_evaluacio = np.asarray([[1,0],
                                  [0,1],
                                  [0,1]], dtype = np.float32)

#WE TEST THE DATATYPES
print("dades dels nombres:   ",type(persones[0][0]))
print("tipus estructura de dades de la matriu:    ", type(persones))
time.sleep(3)
print("files de la matriu:")
time.sleep(0.5)
for i in range(len(persones)):
    print(persones[i])
time.sleep(0.5)


def classifica_H_D(nombre_VIs, categories_VD):

    #placeholders
    x = tf.placeholder(tf.float32, [None,nombre_VIs])
    y_reals = tf.placeholder(tf.float32, [None,categories_VD])

    #variables
    w = tf.Variable(tf.zeros([nombre_VIs, categories_VD], dtype = tf.float32))
    b = tf.Variable(tf.zeros([categories_VD], dtype = tf.float32))


    #DEFINE MODEL
    y_predits = tf.nn.softmax(tf.matmul(x,w) + b)

    # define LOSS FUNCTION
    cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_reals, logits=y_predits))

    #define optimizer to get cross_entropy minimized
    train_step = tf.train.GradientDescentOptimizer(0.001).minimize(cross_entropy)


    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        print("finsaqui")
        time.sleep(2)
        for i in range(1000): #iterate over same data.
            sess.run(train_step, feed_dict = {x : persones, y_reals : etiquetes})
            if i%50:
                print(w.eval(), sess.run(cross_entropy))

        prediccio_correcta = tf.equal(tf.argmax(y_predit,1), tf.argmax(y_correctes,1))
        accuracy = tf.reduce_mean(tf.cast(prediccio_correcta, tf.float32))
        return "\naccuracy: {:.2f}".format(sess.run(accuracy, feed_dict={x: persones_evaluacio, y_reals: etiquetes_evaluacio}))


print(classifica_H_D(3,2))

问题在于:

 print(w.eval(), sess.run(cross_entropy)), 
您需要以以下形式向其提供输入:

 print(w.eval(), sess.run(cross_entropy, feed_dict = {x : persones, y_reals : etiquetes}))
或者更好的方法是:

 for i in range(1000): #iterate over same data.
     _, c_entropy = sess.run([train_step,cross_entropy], feed_dict = {x : persones, y_reals : etiquetes})
     if i%50:
        print(w.eval(), c_entropy)

问题在于:

 print(w.eval(), sess.run(cross_entropy)), 
您需要以以下形式向其提供输入:

 print(w.eval(), sess.run(cross_entropy, feed_dict = {x : persones, y_reals : etiquetes}))
或者更好的方法是:

 for i in range(1000): #iterate over same data.
     _, c_entropy = sess.run([train_step,cross_entropy], feed_dict = {x : persones, y_reals : etiquetes})
     if i%50:
        print(w.eval(), c_entropy)