черт возьми, да
аюсь создать простую модель глубокого обучения для прогнозированияy=x**2
Но, похоже, глубокое обучение не в состоянии изучить общую функциювыходит за рамки его тренировочного набора.
Интуитивно я могу думать, что нейронная сеть может не соответствовать y = x ** 2, поскольку между входами нет умножения.
Обратите внимание, я не спрашиваю, как создать модель, чтобы соответствоватьx**2
, Я уже достиг этого. Я хочу знать ответы на следующие вопросы:
Путь к полной записной книжке:https://github.com/krishansubudhi/MyPracticeProjects/blob/master/KerasBasic-nonlinear.ipynb
учебный вклад:
x = np.random.random((10000,1))*1000-500
y = x**2
x_train= x
учебный код
def getSequentialModel():
model = Sequential()
model.add(layers.Dense(8, kernel_regularizer=regularizers.l2(0.001), activation='relu', input_shape = (1,)))
model.add(layers.Dense(1))
print(model.summary())
return model
def runmodel(model):
model.compile(optimizer=optimizers.rmsprop(lr=0.01),loss='mse')
from keras.callbacks import EarlyStopping
early_stopping_monitor = EarlyStopping(patience=5)
h = model.fit(x_train,y,validation_split=0.2,
epochs= 300,
batch_size=32,
verbose=False,
callbacks=[early_stopping_monitor])
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_18 (Dense) (None, 8) 16
_________________________________________________________________
dense_19 (Dense) (None, 1) 9
=================================================================
Total params: 25
Trainable params: 25
Non-trainable params: 0
_________________________________________________________________
Оценка на случайном наборе тестов
Глубокое обучение в этом примере не подходит для предсказания простой нелинейной функции. Но хорош в прогнозировании значений в выборочном пространстве обучающих данных.