我正在使用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)
提前致谢!!
答案 0 :(得分:1)
模型中的形状不匹配。请注意,如果您有张量A
和B
形状
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)
这对我来说很好!