【发布时间】:2021-08-23 16:37:08
【问题描述】:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.model_selection import train_test_split
import tensorflow.keras as keras
dataset = pd.read_csv('C:\\Users\\Maxie\\MyStuff\\FinalDatasetEng.csv')
inputs = dataset.iloc[:, 2:54].values
targets = dataset.iloc[:, 55].values
from sklearn.model_selection import train_test_split
inputs_train, inputs_test, targets_train, targets_test = train_test_split(inputs, targets,
test_size = 0.20, random_state = 0)
import keras
from keras.models import Sequential
from keras.layers import Dense
model = keras.Sequential([
# input layer
keras.layers.Flatten(input_shape=(inputs.shape[0], inputs.shape[1])),
# 1st dense layer
keras.layers.Dense(520, activation='relu'),
# 2nd dense layer
keras.layers.Dense(208, activation='relu'),
# 3rd dense layer
keras.layers.Dense(52, activation='relu'),
# output layer
keras.layers.Dense(4, activation='softmax')
])
optimiser = keras.optimizers.Adam(learning_rate=0.0001)
model.compile(optimizer=optimiser,
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
history = model.fit(inputs_train, targets_train, validation_data=(inputs_test, targets_test),
batch_size=32, epochs=50)
这是我的代码, 我收到此错误: ValueError:dense_20 层的输入 0 与该层不兼容:输入形状的预期轴 -1 具有值 51948,但接收到的输入具有形状(无,52)。任何人都请帮我解决这个问题。
【问题讨论】:
-
你的输入和目标的形状是什么?
-
您的输入是一维数组。为什么使用 Flatten 层来平整
input_shape[0]和input_shape[1]?input_shape[0]是示例的数量。正确的?似乎您有 999 个示例,因为 51948/52。所以不要扁平化你的例子和特性。
标签: python tensorflow keras neural-network