Ошибка при проверке цели: ожидается, что плотность_3 будет иметь форму (1,), но получен массив с формой (1000,) - PullRequest
1 голос
/ 03 февраля 2020

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

#Load libraries
import numpy as np 
import tensorflow as tf
from keras.datasets import imdb
from keras.preprocessing.text import Tokenizer
from keras import models
from keras import layers
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

#set random seed
np.random.seed(0)
#Set the number of features we want 
nof = 1000
#load data and target vector fro movie review data
(data_train, target_train),(data_test,target_test)=imdb.load_data(
    num_words=nof)
print("data.train:",data_train.shape,"data.test:",data_test.shape)
#Convert movie review data to one-hot encoded feature matrix
tokenizer = Tokenizer(num_words=nof)
features_train=tokenizer.sequences_to_matrix(data_train,mode="binary")
features_test=tokenizer.sequences_to_matrix(data_test,mode="binary")

print(features_train.shape)
print(features_test.shape)
#Start neural network
network = models.Sequential()
#Add fully connected layer with a with a ReLu activation function
network.add(layers.Dense(units=16, activation="relu", input_shape=(nof,)))
network.add(layers.Dense(units=16, activation="relu"))
network.add(layers.Dense(units=1, activation="sigmoid"))
#Compile network
network.compile(loss="binary_crossentropy",optimizer="rmsprop",
                metrics=["accuracy"])

#Train neural network
history = network.fit(features_train,#Features
            target_train,#Target vector
            epochs=3,#Number of epochs
            verbose=1,#print description after each epoch
            batch_size=100,#no obs per batch
            validation_data=(features_test,features_train))#Test_data

Получение ошибки, показанной ниже, и не могу найти причину этой ошибки

2020-02-03 22:59:08.496324: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_100.dll'; dlerror: cudart64_100.dll not found
2020-02-03 22:59:08.502963: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
Using TensorFlow backend.
data.train: (25000,) data.test: (25000,)
(25000, 1000)
(25000, 1000)
WARNING:tensorflow:From C:\Users\paulr\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow_core\python\ops\resource_variable_ops.py:1630: calling BaseResourceVariable.__init__ (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.
Instructions for updating:
If using Keras pass *_constraint arguments to layers.
WARNING:tensorflow:From C:\Users\paulr\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow_core\python\ops\nn_impl.py:183: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.where in 2.0, which has the same broadcast rule as np.where
Traceback (most recent call last):
  File "Binary_classifier_NN.py", line 42, in <module>
    validation_data=(features_test,features_train))#Test_data
  File "C:\Users\paulr\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\training.py", line 1175, in fit
    batch_size=batch_size)
  File "C:\Users\paulr\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\training.py", line 621, in _standardize_user_data
    exception_prefix='target')
  File "C:\Users\paulr\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\training_utils.py", line 145, in standardize_input_data
    str(data_shape))
ValueError: Error when checking target: expected dense_3 to have shape (1,) but got array with shape (1000,)

Я попытался обучить и приспособить свою модель, однако я получил сообщения об ошибках показано выше, как я могу решить эту проблему? Похоже, мой последний плотный слой имеет размер 1000, почему он все еще жалуется на это?

1 Ответ

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

Судя по всему, вам нужно исправить аргумент validation_data в функции fit.

validation_data=(features_test, target_test)

Исходя из представленного кода, тренировочные данные features_train , с соответствующей обучающей этикеткой target_train. Данные проверки должны быть features_test и target_test.

...