初始化 Keras 顺序神经网络的正确方法?

Correct way to initialize a Keras sequential neural net?

我正在尝试初始化 Keras 神经网络。我的 X 是形状为 (70000, 4) 的矩阵,我希望第一层有 64 个节点

model = Sequential() 
model.add(Dense(64, input_shape=(X.shape)))

以上语法不正确。我的 model.add() 什么是正确的?

我想你有 70000 个样本,每个样本有 4 个点。在这种情况下,使用 Dense (64, input_shape=(4,)) 它应该可以工作。

虽然您的网络可能足够小,您可以将 batch_size 设置为几千,甚至与输入的大小相同,但网络会以 batch_size 的块对样本进行迭代.

旧答案 我以为 每个 样本是 70000x4...

Dense层不能将矩阵作为输入。在 Keras 文档中,Dense(n_nodes, input_shape=(n_inputs,)) 等同于 Dense(n_nodes, input_dim=n_inputs),这似乎是它接受的唯一一种输入。这里 n_inputs 是一个整数。

你基本上有两个选择:要么在使用 X.reshape(-1) 将 X 传递到网络之前展平 X,要么使用 Reshape 作为第一层,如下所示:

model = Sequential()
model.add(Reshape((X.size,), input_shape=(X.shape)))
model.add(Dense(64))

您可以使用 Flatten 而不是 Reshape,尽管我无法从文档中判断 Flatten 是否可以采用 input_shape 参数。