【发布时间】:2018-10-16 13:21:16
【问题描述】:
我在 Keras 做虚拟模型时遇到了一件奇怪的事情。由于现在不重要的原因,我决定尝试训练一组权重成为单位矩阵。我的代码如下:
import tensorflow as tf
from tensorflow import keras
import numpy as np
tfe = tf.contrib.eager
tf.enable_eager_execution()
i4 = np.eye(4)
inds = np.random.randint(0,4,size=2000)
data = i4[inds]
model = keras.Sequential([keras.layers.Dense(4, kernel_regularizer=
keras.regularizers.l2(.001), kernel_initializer='zeros')])
model.compile(optimizer=tf.train.AdamOptimizer(.001), loss= 'mse', metrics = ['accuracy'])
model.fit(data,inds, epochs=50)
这对于本应非常简单的任务做了可怕的事情。我将最后一行更改为
model.fit(data, data, epochs =50)
我认为这基本上意味着我将标签作为一个热向量提供。有了这条线,在这个非常简单的任务上,训练完全符合我的要求。所以,我的问题是:
- 为什么这不适用于第一行而适用于第二行?
- 我需要做什么才能将输出提供给 keras,而不是作为一个热向量?我不介意转换。只是我见过的一些例子——甚至是 MNIST——似乎在输入它们之前都没有将它们的标签转换为一个热点。这里有什么问题? keras 是否正在尝试以我不期望的方式转换我给它的数字/其他标签?如果是这样,它如何转换这些标签以便我可以正确预测响应?
【问题讨论】:
标签: python tensorflow keras