2
我有這個簡單的模型(5個頻道),我希望它返回第二個Keras組件選擇
import keras
import numpy as np
import keras.backend as K
data = np.random.normal(size = (1000, 5))
model = keras.models.Sequential()
model.add(keras.layers.Dense(10, activation = 'linear',input_shape = (5,)))
model.add(keras.layers.Dense(1, activation = 'linear'))
def loss(x, y):
return K.mean(K.square(x - y))
model.compile('adam', loss)
model.fit(data, data[:, 1], epochs = 100)
它的偉大工程,我得到完美的零損耗。
當我稍微調整一下(我在輸出中添加了一個額外的通道),我決定不關心第二個通道。
我改變它是這樣的:
import keras
import numpy as np
import keras.backend as K
data = np.random.normal(size = (1000, 5))
model = keras.models.Sequential()
model.add(keras.layers.Dense(10, activation = 'linear',input_shape = (5,)))
model.add(keras.layers.Dense(2, activation = 'linear'))
def loss(x, y):
return K.mean(K.square(x - y[:, 0]))
model.compile('adam', loss)
model.fit(data, data[:, 1], epochs = 100)
,現在是不可能的訓練。這對我來說似乎很瘋狂。有誰知道發生了什麼?
PS:這個例子看起來很愚蠢,但對於一個更復雜的問題,我需要計算一個自定義的損失,我將這個問題簡化爲這個簡單的例子。
謝謝您的幫助