多层感知器MLPKeras张量流模型

问题描述

我适合自己的模型进行训练后遇到问题。下面是我的代码

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn import preprocessing
from tensorflow import keras
from keras.models import Sequential
from tensorflow.keras import layers
            
     
    
bitcoin_data = pd.read_csv("BitcoinHeistData.csv")
#first we'll need to normalize the dataset
normal = bitcoin_data
normalized_bitcoin_data=preprocessing.normalize(normal)
        
# make it into a dataframe
columns = bitcoin_data.columns
normalized_bitcoin_df = pd.DataFrame(normalized_bitcoin_data,columns=columns)
# start out splitting the data
xtrain = normalized_bitcoin_df
labels = normalized_bitcoin_df.drop('label',axis=1)
         
x,x_validate,y,y_validate = train_test_split(xtrain,labels,test_size=0.2,train_size=0.8)
x_train,x_test,y_train,y_test = train_test_split(x,test_size=0.12,train_size=0.88)


*#This is my output for my variables so far. Exactly how I want to split it 70% - 20% - 10%
#X HERE SHAPE
#(838860,10)
#x_test HERE SHAPE
#(100664,10)
#x_validate HERE SHAPE
#(209715,10)
#X x_train SHAPE
#(738196,10)
#y HERE SHAPE
#(838860,9)
#y_test HERE SHAPE
#(100664,9)
#X y_validate SHAPE
#(209715,9)
#X y_train SHAPE
#(738196,9)*

model = Sequential()
     model.add(layers.Dense(64,activation='relu',kernel_initializer='glorot_normal',bias_initializer='zeros',input_shape=(128,)))
     model.add(layers.Batchnormalization())
     model.add(layers.Dense(32,bias_initializer='zeros'))
     model.add(layers.Batchnormalization())
     model.add(layers.Dense(32,bias_initializer='zeros'))
     model.add(layers.Dense(32,bias_initializer='zeros'))
     model.add(layers.Dropout(0.4))
     model.add(layers.Dense(10,activation='softmax'))
     optimizer = keras.optimizers.RMSprop(lr=0.0005,rho=0)
     model.compile(optimizer=optimizer,loss='categorical_crossentropy',metrics=['accuracy'])
        
     model.fit(x_train,epochs=20,batch_size=128)
    

#我为x_train和y_train运行 model.fit 时收到此错误ValueError。我不明白 绕过它。任何帮助都将得到

#ValueError:图层顺序的输入0与图层不兼容:预期的轴-1 输入形状的值为128,但接收到形状为[None,10]的输入

解决方法

输入层中的神经元数(input_shape属性)必须等于x_train数据集(x_train.shape [1])的列数。另外,输出层中神经元的数量必须等于y_train(y_train.shape [1])的列数。