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