#python-3.x #tensorflow
#python-3.x #tensorflow
Вопрос:
Ниже приведены два набора очень похожих кодов с очень простым вводом в качестве иллюстративного примера к моему вопросу. Я думаю, что объяснение следующего наблюдения может каким-то образом ответить на мой вопрос. Спасибо!
Когда я запускаю следующий код, модель можно быстро обучить и предсказать хорошие результаты.
import tensorflow as tf
import numpy as np
from tensorflow import keras
model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])
model.compile(optimizer='sgd', loss='mean_squared_error')
model.fit(xs, ys, epochs=1000)
print(model.predict([7.0]))
Однако, когда я запускаю следующий код, который очень похож на приведенный выше, модель обучается очень медленно и может быть плохо обучена и давать плохие прогнозы (т. Е. Потеря легко становится <1 с приведенным выше кодом, но остается на уровне около 20000 с приведенным ниже кодом)
model = keras.Sequential()# Your Code Here#
model.add(keras.layers.Dense(2,activation = 'relu',input_shape = (1,)))
model.add(keras.layers.Dense(1))
#model.compile(optimizer=tf.train.AdamOptimizer(0.1),
#loss='mean_squared_error')
model.compile(optimizer = tf.train.AdamOptimizer(1),loss = 'mean_squared_error')
#model.compile(# Your Code Here#)
xs = np.array([1,2,3,4,5,6,7,8,9,10], dtype=float)# Your Code Here#
ys = np.array([100,150,200,250,300,350,400,450,500,550], dtype=float)# Your Code Here#
model.fit(xs,ys,epochs = 1000)
print(model.predict([7.0]))
Еще одно замечание: когда я обучаю свою модель со вторым набором кода, модель может быть иногда хорошо обучена (~ 8 из 10 раз она плохо обучена, и потери остаются> 10000 после 1000 эпох).
Ответ №1:
Я не думаю, что есть какой-либо прямой способ выбрать лучшую глубокую архитектуру, а провести несколько экспериментов, изменяя гиперпараметры и изменяя архитектуру. Сравните производительность каждого эксперимента и выберите лучший. Ниже перечислены несколько статей, которые могут быть вам полезны. ссылка-1, ссылка-2, ссылка-3