繁体   English   中英

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

[英]How to create neural network with 35 inputs and 1 output?

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

所以我需要 35x10 输入和 1 个二进制 output。 而且我还想一次在 1 个数据点上训练 model。 这是我试图运行的代码:

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)

在拟合时出现错误:

Traceback (most recent call last):
  File "/home/natalia/PycharmProjects/raw_recognition/classification.py", line 139, in <module>
    verbose=0)
  File "/home/natalia/.local/lib/python3.6/site-packages/keras/engine/training.py", line 1154, in fit
    batch_size=batch_size)
  File "/home/natalia/.local/lib/python3.6/site-packages/keras/engine/training.py", line 637, in _standardize_user_data
    training_utils.check_array_length_consistency(x, y, sample_weights)
  File "/home/natalia/.local/lib/python3.6/site-packages/keras/engine/training_utils.py", line 244, in check_array_length_consistency
    'and ' + str(list(set_y)[0]) + ' target samples.')
ValueError: Input arrays should have the same number of samples as target arrays. Found 10 input samples and 1 target samples.

Process finished with exit code 1

model 有什么问题? 最后一个密集层应该返回 1 output 还是我误解了这个?

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

  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')

  • 注意:我假设这是一个二元分类问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM