【问题标题】:Specification for weights & bias in TensorflowTensorflow 中的权重和偏差规范
【发布时间】:2017-12-01 23:07:48
【问题描述】:

我正在使用 Tensorflow 并尝试构建一个深度网络模型。我将使用带有 SGD/Adam 优化器(交叉熵最小化)和 L2 正则化器(惩罚大权重以使其过拟合)的 ReLU 激活。

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

对于权重和偏差,我们应该从均值为零且方差为 1 的高斯分布中抽取样本。以前,当我使用 MNIST 数据集执行此操作时,我们使用W = tf.Variable(tf.zeros([784, 10])) & @ 将权重和偏差设置为零987654322@,因为响应有 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)

提前致谢!!

【问题讨论】:

    标签: tensorflow neural-network deep-learning


    【解决方案1】:

    我想通了;

    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)
    

    这对我来说很好用!

    【讨论】:

      【解决方案2】:

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

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

      然后执行

      C = tf.matmul(A, B)
      

      你必须有 b1 = a2,并且生成的张量 C 有形状

      shape(C) = [a1, b2]
      

      在您的示例中,A 对应于具有形状[115599, 12]xB 对应于您要确定形状的wC 对应于y,它必须与目标的形状相同,即[115599, 1]

      你得到w必须有形状[12, 1],而b必须有等级1并且与w的第二个形状相同,所以b必须有[1,]的形状。

      【讨论】:

      • W = tf.Variable(tf.zeros([12, 1])) b = tf.Variable(tf.zeros([1])) y = tf.nn.softmax(tf.matmul(x, W) + b) 就足够了吗?请确认
      • 这不起作用,我遇到了多个错误。如果存在权重和偏差,您能否提供两行的代码片段?
      猜你喜欢
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      相关资源
      最近更新 更多