重量和规格说明书Tensorflow中的偏见

时间:2017-06-28 14:11:12

标签: tensorflow neural-network deep-learning

我正在使用Tensorflow&试图建立一个深层网络模型。我将使用ReLU激活与SGD / Adam优化器(交叉熵最小化)& L2正则化器(惩罚大权重以过度拟合)。

我的数据集有115599行,有13列,实际输入的是1:12列(X)&第13列是二进制响应。我已将输入X标准化。

对于重量和重量偏差,我们应该从高斯分布中取样,零均值&方差1.以前当我使用MNIST数据集时,我们正在设置权重&偏差为W = tf.Variable(tf.zeros([784, 10]))& b = tf.Variable(tf.zeros([10]))因为回复有10个不同的级别(0-9)。

我的问题是,如何指定仅具有两个不同级别的二元响应的权重。我应该把b = tf.Variable(tf.zeros([2]))?

到目前为止我尝试过的代码放在下面;

import tensorflow as tf
import numpy
import pandas as pd

df_X=pd.read_csv('/home/prm/use_validation.csv',usecols = [0,1,2,3,4,5,6,7,8,9,10,11],skiprows=[0],header=None)
df_scale = (df_X - df_X.min()) / (df_X.max() - df_X.min())
d = df_scale.values
Response = pd.read_csv('/home/prm/use_validation.csv',usecols = [12],skiprows=[0],header=None)
labels = Response.values
data_use = numpy.float32(d)
labels = numpy.array(Response,'str')

#tensorflow
x = tf.placeholder(tf.float32,shape=(115599, 12))
x = data_use
w = tf.random_normal([100,115599],mean=0.0, stddev=1.0, dtype=tf.float32)
b = tf.random_normal([100,2],mean=0.0, stddev=1.0, dtype=tf.float32) ##[NOT SURE, PLEASE ASSIST]##

y = tf.nn.softmax(tf.matmul(w,x)+b)

提前致谢!!

2 个答案:

答案 0 :(得分:1)

模型中的形状不匹配。请注意,如果您有张量AB形状

shape(A) = [a1, a2]
shape(B) = [b1, b2]

然后执行

C = tf.matmul(A, B)

你必须有b1 = a2,结果张量C有形状

shape(C) = [a1, b2]

在您的示例中,A对应于x,其形状为[115599, 12],而B对应于w,您要确定其形状,和C对应y,其必须与目标的形状相同,即[115599, 1]

您获得w必须具有[12, 1]形状,而b必须具有等级1且形状与w的第二形状相同,因此{{1}必须有b的形状。

答案 1 :(得分:0)

我已经弄清楚了;

import tensorflow as tf
import numpy
import pandas as pd

df_X=pd.read_csv('/home/prm/use_validation.csv',usecols = [0,1,2,3,4,5,6,7,8,9,10,11],skiprows=[0],header=None)
df_scale = (df_X - df_X.min()) / (df_X.max() - df_X.min())
d = df_scale.values
l = pd.read_csv('/home/prm/use_validation.csv',usecols = [12],skiprows=[0],header=None)
labels = l.values
data_use = numpy.float32(d)
labels = numpy.array(l,'str')
#print data, labels

#tensorflow
x = tf.placeholder(tf.float32,shape=(115599, 12))
x.shape
# x = data_use
w = tf.random_normal([12,1],mean=0.0, stddev=1.0, dtype=tf.float32)
b = tf.Variable(tf.zeros([1]))
w.shape

y = tf.nn.softmax(tf.matmul(x,w)+b)

这对我来说很好!