如何从numpy数组中获取数据以训练CNTK回归模型

时间:2019-04-06 23:57:12

标签: python-3.x linear-regression cntk

我在1D numpy数组中生成了一些随机值,并且试图将这些数据输入到我创建的CNTK模型(下面的代码)中以对其进行训练。但是根据我的方法,我会遇到不同的错误。

我创建的神经网络:

mean = 10
stdev = 2 
x = np.random.normal(mean, stdev, 1000)
y = 2 * x + 25

inputs = c.input_variable(1) #Number of variables
labels = c.input_variable(1) #Number of results
layer1 = Dense(1000, activation = c.relu) #input layer with 1000 neurons
layer2 = Dense(1000, activation = c.relu) #hidden layer with 1000 neurons
layer3 = Dense(1, activation = None) #output layer with 1 neuron
model1 = Sequential([layer1, layer2, layer3])
result = model1(inputs)
loss = c.squared_error(result, labels)
learner = c.sgd(model1.parameters, c.learning_parameter_schedule(0.01))
progress_writer = c.logging.ProgressPrinter(0) 

对于下面的方法(https://cntk.ai/pythondocs/Manual_How_to_feed_data.html),我收到此错误:

运行时错误:变量'Input('Input4',[#],[1])'数据类型浮点数与相应值的数据类型Double不匹配

progress_writer = c.logging.ProgressPrinter(0)
trainer = loss.train((x,y), parameter_learners = [learner], callbacks=[progress_writer])

对于另一种方法,我得到:

ValueError:具有多个输入的节点不支持非字典参数(ndarray)

trainer = c.Trainer(result, loss, [learner])
trainer.train_minibatch((x,y))

有人可以给我一些帮助吗?

2 个答案:

答案 0 :(得分:1)

trainer.train_minibatch()仅使用字典。所以应该是这样的:

data = {inputs: x, labels: y}
trainer.train_minibatch(data)

答案 1 :(得分:0)

我找到了。谢谢@snowflake的提示,但除了您指出的内容外,它还有另一个与numpy shape有关的错误。它是一个向量,但是,cntk与矩阵一起工作。所以我用以下方法重塑它:

x = x.reshape(1000,1)

并且受过如下训练:

trainer.train_minibatch({inputs: x, labels: y})