【问题标题】:How can we map training data to 0 to 1 for Theano?我们如何将 Theano 的训练数据映射到 0 到 1?
【发布时间】:2016-03-30 13:35:02
【问题描述】:

您可能知道,对于 Theano 中的训练任务,我们必须将训练数据映射到 0 到 1。我的训练数据也有负值。目前我正在使用这个公式:

x'=(x - min(x))/(max(x) - min(x))

这是由这段代码实现的:

for i in range (train_x.shape[0]):
    train_x[i,:] = ((train_x[i,:] - train_x[i,:].min(0)) /train_x[i,:].ptp(0))

这个公式正确吗?您对特征重新缩放有更好的想法吗?

【问题讨论】:

  • 那些是 numpy 数组吗?大约 10 分钟前,我写道:(x - x.min(axis=0)) / x.ptp(axis=0) 看起来与您所拥有的几乎相同(没有循环)。在我看来,您只会在一行内进行规范化,而不是像您可能想要的那样跨行进行规范化。
  • 感谢您的回复。是的,它们是 numpy 数组。你是对的。我担心在这种情况下,每行都会有一个 0 和一个 1。我们如何对所有行进行标准化?
  • 我认为你应该可以使用我第一条评论中的表达方式(用train_x 代替x)。不需要循环。
  • 我试过你的评论,但它不起作用。 These are the results:train_set_x= [[ 7.6990701 2.17705725 -3.49150865 ..., -0.33457212 1.02\ 0639 -0.52406797] [-1.50598435 0.52384467 -1.92651141 ..., -1.12350943 0.05220407 -0.06458882] [ 6.70513488 0.36322057 -1.53​​669312 ..., -1.59078881 -0.51936011 0.29170968] ..., [ 6.92596268 2.02438224 -3.15645995 ..., 0.23745564 1.52109066 -0.72535945] [ 6.00661444 1.44427386 -2.22867013 ..., -0.13492791 -0.95444645 0.51398081] [-6.28165553 0.07711241 0.52136293 ..., 0.36748433 0.51728437 0.1107671 ]]

标签: python numpy theano


【解决方案1】:

所以这是我对变量 t 进行标准化的方法,使用您的公式:

import numpy as np
t = np.array([[-1,-2,3,2],[2,1,3,-1]],dtype='float32')
b = (t-t.min(1).reshape(2,1))/t.ptp(1).reshape(2,1)
print b

它给出了正确的输出:

[[0.2, 0,   1, 0.8]
[0.75, 0.5, 1,   0]]

【讨论】:

    猜你喜欢
    • 2020-03-28
    • 2016-08-25
    • 2018-12-24
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多