开发者社区> 问答> 正文

如何匹配布尔索引数组与维度?

我想评估特征选择技术粒子群优化与神经网络。但我一直有这样的错误: “布尔索引与维度1上的索引数组不匹配;维数为1,对应的布尔维数为19。 这是我的代码:

model = Sequential()
model.add(Dense(16, input_dim=19, activation= 'relu'))
model.add(Dense(12, activation= 'relu'))
model.add(Dense(2, activation= 'softmax'))
model.add(Flatten())
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

def f_per_particle(m, alpha):
    total_features = 19
    if np.count_nonzero(m) == 0:
        X_subset = x_train
    else:
        X_subset = x_train[:,m==1]

    P=model.fit(X_subset, y_train, batch_size=64, epochs=100)
    j = (alpha * (1.0 - P)+ (1.0 - alpha) * (1 - (X_subset.shape[1] / total_features)))
    return j

def f(x, alpha=0.9):
    n_particles = x.shape[0]
    j = [f_per_particle(x[i], alpha) for i in range(n_particles)]
    return np.array(j)

options = {'c1': 0.5, 'c2': 0.5, 'w':0.9, 'k': 30, 'p':2}
dimensions = 19 
optimizer = ps.discrete.BinaryPSO(n_particles=100, dimensions=dimensions, options=options)
cost, pos = optimizer.optimize(f, iters=100)

问题来源StackOverflow 地址:/questions/59386403/how-to-match-boolean-index-array-along-with-dimension

展开
收起
kun坤 2019-12-25 21:57:49 428 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载