<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<tr class="deleteRow">
<th scope="row">
<button type="button" class="btn btn-danger btn-sm">
<i class="fas fa-trash"></i>
</button>
</th>
<td>Item 1</td>
<td>
<input class="form-control" type="number" value="1" />
</td>
<td>RM 50.00</td>
</tr>
我必须将MNIST数据分为10类。我将Y_train转换为一个热编码数组。我已经回答了许多答案,但是没有一个帮助。在这方面,请指导我,因为我是ML和神经网络的新手。
答案 0 :(得分:0)
似乎不需要在第一层中使用model.add(Flatten())
。可以使用具有特定输入大小的密集层来代替,例如:model.add(Dense(64, input_shape=your_input_shape, activation="relu")
。
要确保此问题是由于分层而发生的,可以检查to_categorical()
函数是否可与jupyter notebook一起使用。
在创建模型之前,应重塑模型。在这种情况下,28 * 28为784。
train_images = train_images.reshape((-1, 784))
test_images = test_images.reshape((-1, 784))
我还建议通过简单地将图像划分为255来标准化可以完成的数据
完成此步骤后,您应该创建模型。
model = Sequential([
Dense(64, activation='relu', input_shape=(784,)),
Dense(64, activation='relu'),
Dense(10, activation='softmax'),
])
您是否注意到input_shape=(784,)
是扁平化输入的形状。
最后一步,编译和拟合。
model.compile(
optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'],
)
model.fit(
train_images,
train_labels,
epochs=10,
batch_size=16,
)
您所做的是,您只是在不向网络馈入输入的情况下将输入层弄平了。这就是为什么您遇到问题。关键是您应该手动调整输入的形状并使用参数Dense()
前馈到input_shape
层