Попытка сделать нейронную сеть предсказывающей серию выходов. Я не уверен, что я делаю не так - PullRequest
0 голосов
/ 26 марта 2020

Я довольно новичок с Python, и я пытаюсь создать нейронную сеть, которая может классифицировать серию самолетов на основе 10 различных параметров. Все эти параметры приведены в массиве (10,10) numpy. Вот что у меня есть:

import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt

data = np.genfromtxt('Aircraft data.csv', delimiter =',')
names = ["Airbus A330-200","Airbus A330-300","Boeing 737-700","Boeing 737-800","Boeing 737-900",
         "Boeing 747-400","Boeing 777-200","Boeing 777-300ER","Boeing 787-10","Boeing 787-9"]
X = data[1:,1:]
Y = [[1.],[2.],[3.],[4.],[5.],[6.],[7.],[8.],[9.],[10.]]
Y_stack = np.row_stack((Y,Y,Y,Y,Y,Y,Y,Y,Y,Y))
Y = np.array(Y)


train_data = np.zeros((1,10,10))
for i in range(10):
    for e in range(10):
        train_data[0,i,e] = X[i,e]
train = train_data

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(10,10)),
    keras.layers.Dense(8,activation="linear"),
    keras.layers.Dense(10,activation="softmax")
    ])

model.summary

model.compile(optimizer = 'adam', loss="mean_squared_error", metrics=['mean_squared_error'])

model.fit(train,Y.T,epochs=10,)

test_loss, test_acc = model.evaluate(train,Y.T)

print("Tested Acc:", test_acc)

prediction = model.predict(train)
print(names[np.argmax(prediction[0])])


Я боролся с форматом данных. Если я запускаю его несколько раз, кажется, что он иногда предсказывает это со 100% точностью, что заставляет меня думать, что, вероятно, что-то не так с тем, как я подаю массив. Я не могу понять, что это такое.

...