2017-09-24 6 views
0
import pandas as pd 
import numpy as np 
from pandas import DataFrame 
from random import shuffle 
import tensorflow as tf 

prendre des données à partir du fichier CSV (jeu de données) IMDBpoids et polarisation donnant NaN

data=pd.read_csv('imdb.csv') 
data.fillna(-1) 
features=data.loc[:,['actor_1_facebook_likes','actor_2_facebook_likes','actor_3_facebook_likes','movie_facebook_likes']].as_matrix() 
labels=data.loc[:,['imdb_score']].as_matrix() 


learning_rate=.01 
training_epochs=2000 
display_steps=50 
n_samples=features.size 

espaces réservés Définition des caractéristiques et des étiquettes:

inputX = tf.placeholder(tf.float32,[None,4]) 
inputY = tf.placeholder(tf.float32,[None,1]) 

poids définition et la polarisation. Les poids et biais ressortent comme étant NaN.

w = tf.Variable(tf.zeros([4,4])) 
b = tf.Variable(tf.zeros([4])) 

y_values = tf.add(tf.matmul(inputX,w),b) 

Application réseau de neurones:

y=tf.nn.softmax(y_values) 
cost=tf.reduce_sum(tf.pow(inputY-y,2))/2*n_samples 
optimizer=tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) 

with tf.Session() as sess: 
      sess.run(tf.global_variables_initializer()) 
      for i in range(training_epochs): 
       sess.run(optimizer,feed_dict={inputX:features,inputY:labels}) 
       if (i) % display_steps==0: 
       cc=sess.run(cost,feed_dict={inputX:features,inputY:labels}) 
       print(sess.run(w,feed_dict={inputX:features,inputY:labels})) 

Répondre

1

Votre taux d'apprentissage est trop grand (essayez de démarrer avec 1e-3). De plus, votre réseau de neurones n'apprendra rien parce que vous partez d'une situation dans laquelle vos poids ne peuvent pas changer: vous avez initialisé vos poids à zéro, c'est faux.

Changer votre initialisation de poids à des valeurs aléatoires de cette façon:

w = tf.Variable(tf.truncated_normal([4,4])) 

et vous serez en mesure de former votre réseau. (les biais initialisés à 0 sont corrects)

+0

oui. J'ai une fois initialisé les poids avec std = 1, les poids deviendront NAN après une certaine époque, Quand je change en std = 1e-2, le processus de formation fonctionne trouver. donc l'initialisation des poids est très importante. –