Я хочу обучить свою модель списку номеров. Я не ожидаю, что это даст высокую точность, но по крайней мере 25%. Я разработал небольшую модель, используя метод Sequential()
, но в конце он дает мне вывод в 0.0xy. Это действительно хуже. Я даже пытался построить модель, используя Neural Network
на Azure ML workspace
, но безуспешно.
Я использовал код из Github ! и его источник от здесь !
У меня есть файл, который содержит 200 000 случайных чисел в текстовом формате. Я преобразовал его в CSV с 150 значениями, где 150-е является предсказуемым значением. Хотя изначально я взял только 2000
для легкой обработки с 50 size
кусками.
Я искал эту тему и нашел много вопросов по ней, но не смог найти идеальное решение.
Вот мой код модели сборки
def build_model():
model = Sequential()
layers = [1, 50, 100, 1]
model.add(LSTM(
layers[1],
input_shape=(None, layers[0]),
return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(
layers[2],
return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(
layers[3]))
model.add(Activation("linear"))
start = time.time()
model.compile(loss="mse", optimizer="rmsprop")
print("Compilation Time : ", time.time() - start)
return model
иего рабочий код
def run_network(model=None, data=None):
global_start_time = time.time()
epochs = 1
ratio = 1.0
sequence_length = 50
path_to_dataset = open('InputNumber6_demo.txt','r+',encoding = "utf-8-sig")
if data is None:
print("Loading data...")
X_train, y_train, X_test, y_test = dpc.data_power_consumption(
path_to_dataset, sequence_length, ratio)
else:
X_train, y_train, X_test, y_test = data
print('\nData Loaded. Compiling...\n')
if model is None:
model = bm.build_model()
try:
model.fit(
X_train, y_train,
batch_size=512, nb_epoch=epochs, validation_split=0.05)
predicted = model.predict(X_test)
predicted = np.reshape(predicted, (predicted.size,))
except KeyboardInterrupt:
print('Training duration (s) : ', time.time() - global_start_time)
return model, y_test, 0
try:
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(y_test[:100])
plt.plot(predicted[:100])
plt.show()
except Exception as e:
print(str(e))
print('Training duration (s) : ', time.time() - global_start_time)
print("y_test :" ,y_test)
print("predicted : ", predicted)
return model, y_test, predicted
Я получаю вывод в следующих долях:
[7.896141 7.8818192 7.8702197 7.8729057 7.887852 7.8909307 7.880986
7.8800116 7.8971305 7.8821206 7.872368 7.8670635 7.859713 7.866045
7.895461 7.884264 7.89429 7.891604 7.9120145 7.9183216 7.9248204
7.9104924 7.9158993 7.897169 7.916412 7.9040785 7.920195 7.9250274
7.933447 7.93625 7.8920164 7.9262824 7.9311395 7.936692 7.943627
7.9117746 7.921586 7.9338064 7.9352465 7.913917 7.9132504 7.9155235
7.892686 7.8813086 7.904029 7.902289 7.886468 7.88697 7.920277
7.9392414 7.935853 7.9325123 7.9430776 7.9166965 7.8978596]
Пожалуйста, сообщите мне проблему в этом случае или есть какой-либо алгоритм для создания модели