赋予南的​​权重和偏见

时间:2017-09-24 09:56:33

标签: python pandas tensorflow nan

import pandas as pd  
import numpy as np  
from pandas import DataFrame  
from random import shuffle  
import tensorflow as tf  

从CSV文件(IMDB数据集)中获取数据

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  

定义要素和标签的占位符:

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

定义权重和偏见。 重量和偏见都是NaN。

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

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

应用神经网络:

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}))  

2 个答案:

答案 0 :(得分:2)

您的学习率太高(尝试从1e-3开始)。 此外,您的神经网络不会学到任何东西,因为您从权重无法改变的情况开始:您已将权重初始化为零,这是错误的。

以这种方式将权重初始化更改为随机值:

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

您将能够训练您的网络。 (偏差初始化为0都可以)

答案 1 :(得分:1)

使用TensorFlow库的add_check_numerics_ops来检查哪个操作为您提供了nan值。

https://www.tensorflow.org/api_docs/python/tf/add_check_numerics_ops