2017-12-03 17 views
0

3つの入力「ニューロン」(高さ、重さ、体脂肪の3つの機能を持つ)と2つの出力「ニューロン」の単純なニューラルネットワークを実行して、 softmaxロジスティック回帰、男性または女性のいずれかに)。モデルへのデータ入力を実践するためにこのデータを構成しました。テンソルフローのウェブサイト上のMNISTチュートリアルのようなものですが(784個の入力フィーチャの代わりに、与えられたMNISTイメージのピクセルのみで、私は3つしかなく、私たちのモデルを訓練するために複数のバッチの代わりに同じデータで数回訓練する)。Tensorflow:numpy ndarrayをプレースホルダーに送るときのInvalidArgumentError

これは、k-meansクラスタリングのような、より単純なアルゴリズムで行うことができます。しかし、私はちょうどそれが小さいときにデータを入力する方法を学びたいです。

私はこれを取得:

InvalidArgumentError: You must feed a value lue for placeholder tensor 'Placeholder' with 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)) 

答えて

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) 
+0

ありがとうございました!!!!!出来た! :) :) – americansanti

関連する問題