如何创建具有35个输入和1个输出的神经网络?

时间:2020-05-03 09:49:02

标签: python keras neural-network

我是机器学习的新手。我正在使用Keras为二进制分类构建以下神经网络:image

所以我需要35x10输入和1个二进制输出。我也想一次在一个数据点上训练模型。这是我要运行的代码:

const [masterState, setMasterState] = useState(null);

useEffect(() => {
  const fetchData = async (name) => {
    const initialData = await fetch(`http://example.com/api/${name}`);
    const jsonResponse = await initialData.json()
    setMasterState(jsonResponse)
  };

  ["Bill", "Bob", "Brian"].map(name => fetchData(name));

}, [thingThatChanged]);

在安装时我收到一个错误:

from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.layers.normalization import BatchNormalization

model_online_1 = Sequential()
model_online_1.add(BatchNormalization(input_shape=tuple([grouped_X_train.shape[1]])))
model_online_1.add(Dense(35, batch_size=35, input_dim=10))
model_online_1.add(Activation('relu'))
model_online_1.add(Dropout(0.2))
model_online_1.add(Dense(35))
model_online_1.add(Activation('relu'))
model_online_1.add(Dropout(0.2))
model_online_1.add(Dense(1))
model_online_1.add(Activation('softmax'))
model_online_1.compile(loss='categorical_crossentropy', optimizer='adam')

batch_size = 1
nb_classes = 2
nb_epoch = 1

for i in range(no_of_samples):
    # train on ith data point
    model_online_1.fit(grouped_X_train[i].T, [grouped_Y1_train[i]],
                       batch_size, nb_epoch,
                        verbose=0)

模型有什么问题?最后一个密集层应返回1输出,否则我会误解?

更新:Grouped_X_train.shape:(26、35、10),Grouped_Y1_train.shape:(26,)

1 个答案:

答案 0 :(得分:0)

  1. 您输入的形状错误。应该是(35,10)

model_online_1.add(BatchNormalization(input_shape=(35,10)))

  1. 在第一层使用BatchNorm是一个不寻常的选择。

  2. 您需要在第二个密集层中再次指定input_dimbatch_size,这是另一个问题。您如何组成这些不存在的参数?

model_online_1.add(Dense(35))

  1. 您的最后一层应该是sigmoid而不是softmax

model_online_1.add(Activation('sigmoid'))

  1. 您的损失应为binary_crossentropy

model_online_1.compile(loss='binary_crossentropy', optimizer='adam')

  • NB:我假设这是一个二进制分类问题。