我是机器学习的新手。我正在使用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,)
答案 0 :(得分:0)
model_online_1.add(BatchNormalization(input_shape=(35,10)))
在第一层使用BatchNorm是一个不寻常的选择。
您需要在第二个密集层中再次指定input_dim
和batch_size
,这是另一个问题。您如何组成这些不存在的参数?
model_online_1.add(Dense(35))
sigmoid
而不是softmax
。 model_online_1.add(Activation('sigmoid'))
binary_crossentropy
model_online_1.compile(loss='binary_crossentropy', optimizer='adam')