【问题标题】:Cost function for Convolution neural network卷积神经网络的成本函数
【发布时间】:2016-08-21 19:47:53
【问题描述】:

我正在通过卷积神经网络进行文本分类。在示例MNIST 中,他们有 60.000 个手写数字示例,每个图像的大小为 28 x 28,并且有 10 个标签(从 0 到 9)。所以重量的大小将是 784 * 10 (28 * 28 = 784)

这是他们的代码:

x = tf.placeholder("float", [None, 784])
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))

就我而言,我应用了word2vec 来对我的文档进行编码。 word embedding的结果“dictionary size”是2000,embedding size是128。有45个标签。我尝试做与示例相同的操作,但没有成功。这是我所做的:我将每个文档都视为图像。例如,该文档可以表示为 2000 x 128 的矩阵(对于出现在文档中的单词,我为该列附加了单词 Vector 值,而其他值为零。我在创建 W 和 x 时遇到了麻烦,因为我的输入数据是一个 2000 x 128 的 numpy 数组,而 x = tf.placeholder("float", [None, 256000])。大小不匹配。

有人可以提出任何建议吗?

谢谢

【问题讨论】:

    标签: python tensorflow word2vec


    【解决方案1】:

    Placeholder x 是一个扁平图像数组,其中第一维 None 对应于批量大小,即图像数量,256000 = 2000 * 128。因此,为了正确地输入x,您需要展平您的输入。既然您提到您的输入是 numpy 数组,请查看 numpy.reshapeflatten

    【讨论】:

    • 谢谢,但我仍然不明白为什么我们必须设置无,因为我没有看到任何关于批处理的信息。昨晚,我想到了矩阵乘法,我有一个理想,我可以设置 W 为 [128, 10],所以当我们将 W[128, 10] 和 x[2000, 128] 相乘时,我们得到输出矩阵 [2000, 10]。你怎么看?
    • None 当我们不想硬编码批量大小时设置,这样批量可以是可变大小的。在MNIST example 中,批次的大小为 100(参见第 52 行)。因此,在您的情况下,x 的大小为[None, 256000],因此W 的大小应为[256000, 10],其中10 是层输出数。
    • 嗨,s.g,很抱歉打扰您,但我正在尝试将我的数据作为 [代码示例][1] 提供给卷积神经网络,但实际上卡在了成本函数中。您能否建议我的成本函数大小应该如何? [1]:github.com/dennybritz/cnn-text-classification-tf/blob/master/…
    • 您提到有 45 个标签,因此您的网络应该产生 45 个输出。如果使用单层,则W 的大小应为[256000, 45]b - [45]W * x + b 的大小为 [None, 45],这对应于示例中的 self.scoresself.input_y 对应于基本事实,在您的情况下具有 [None, 45] 大小,因为有 45 个标签。
    猜你喜欢
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 2020-11-01
    • 2020-10-07
    • 2020-10-19
    相关资源
    最近更新 更多