Я не совсем понимаю, как я собираюсь предсказать пользовательские данные с помощью Keras - PullRequest
0 голосов
/ 07 февраля 2020

Пример кода

import os
import random
import time
import numpy as np

# first neural network with keras make predictions
from numpy import loadtxt
from keras.models import Sequential
from keras.layers import Dense

def network():

# load the dataset
    dataset = loadtxt('blackjackdata.txt', delimiter=',')
# split into input (X) and output (y) variables
    X = dataset[:,0:4]
    print(X)
    y = dataset[:,4]
    print(y)
# define the keras model
    model = Sequential()
    model.add(Dense(12, input_dim=4, activation='relu'))
    model.add(Dense(4, activation='relu'))
    model.add(Dense(1, activation='sigmoid'))
# compile the keras model
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# fit the keras model on the dataset
    model.fit(X, y, epochs=150, batch_size=10, verbose=0)
# make class predictions with the model
    predictions = model.predict(X) 
# summarize the first 5 cases
    for i in range(20):
        print('%s => %d (expected %d)' % (X[i].tolist(), predictions[i], y[i]))

Мои данные поезда четыре входа и один выход (вход, вход, вход, вход, выход)

2,10,2,8,1
10,20,10,10,0
5,15,7,8,0
2,10,2,8,1
10,20,10,10,0
5,15,7,8,0
2,10,2,8,1
10,20,10,10,0
5,15,7,8,0
2,10,2,8,1
10,20,10,10,0
5,15,7,8,0
2,10,2,8,1
10,20,10,10,0
5,15,7,8,0
2,10,2,8,1
10,20,10,10,0
5,15,7,8,0
2,10,2,8,1
10,20,10,10,0
5,15,7,8,0
5,13,3,10,1

Моя проблема в том, что я хочу добавить пользовательские входные данные и посмотреть, что будет предсказано, но я получаю ошибку о форме массива. Я изменил форму массива, но я не понимаю, что именно собираюсь делать.

predictions = model.predict(X) <--- I want to change here with a custom input like and get output
predictions = model.predict([7,15,10,5])

Ошибка: ValueError: Ошибка при проверке ввода: ожидалось, что dens_1_input будет иметь форму (4,), но получил массив с формой (1,)

Ответы [ 2 ]

1 голос
/ 08 февраля 2020

Ожидаемая форма для вашего ввода с одной выборкой составляет (1, 4), поэтому вы должны соответствующим образом изменить свои данные:

predictions = model.predict(np.array([7,15,10,5]).reshape(1, 4))

Вы также можете получить тот же эффект с помощью:

predictions = model.predict(np.array([[7,15,10,5]]))

как np.array([[7,15,10,5]]).shape равно (1, 4)

0 голосов
/ 07 февраля 2020

Попробуйте изменить ваш ввод следующим образом:

predictions = model.predict(np.array([7,15,10,5]).reshape(4,-1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...