【发布时间】:2019-05-31 21:06:18
【问题描述】:
我刚刚开始使用 Keras,所以我想尝试制作我能想到的最简单的回归问题,作为一种 Hello World。
我正在尝试训练一个输出双倍输入的模型。我想一个没有激活函数的具有两个节点(1 个输入 1 个输出)的网络应该可以解决问题。权重应该简单地收敛到 2。
这是我的代码:
layers = keras.layers
# Feed forward structure
model = keras.Sequential()
model.add(layers.Dense(1))
model.add(layers.Dense(1))
model.compile(optimizer=tf.train.AdamOptimizer(0.01),
loss='mae',
metrics=['mae'])
train_data = np.asarray([x for x in range(100)])
train_labels = np.asarray([x * 2 for x in train_data])
model.fit(train_data, train_labels, epochs=50, batch_size=32)
但是,当我向它提供一维 numpy 数组时,它会崩溃并出现以下错误:
ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`.
如果我在train_data 中添加多余的括号,它会编译(不收敛):
train_data = np.asarray([[x for x in range(100)]])
Epoch 50/50
1/1 [==============================] - 0s 705us/step - loss: 50.0463 - mean_absolute_error: 50.0463
【问题讨论】:
标签: python tensorflow machine-learning keras linear-regression