0

我正在研究帕金森病预测,并尝试实施Deep 1D-Convnet 文章中提到的“具有应用程序的专家系统第 143 卷,2020 年 4 月 1 日”中的模型,用于准确地检测帕金森病并从步态预测严重程度。模型如下,我尝试使用 18 个单独的 1D convnet 从 18 个单独的特征中提取深层特征。

为此,我使用两个函数conv1D_full()来创建单独的 1D 修道院,multiple_cnn1D(nb)将 18 个 convnet 组合到神经网络(nb=18)。

conv1D_full执行


def conv1D_full(inputs):

    inputs=tf.expand_dims(inputs,axis=-1)
    
    x = Conv1D(filters=8, kernel_size=3, activation='selu', padding='same')(inputs)
    x = Conv1D(filters=16, kernel_size=3, activation='selu', padding='same')(x)
    
    return x

multiple_cnn1D执行


def multiple_cnn1D(nb):

    inputs = Input(shape=(100, nb))

    outputs = conv1D_full(inputs[:,:,0])

    for i in range(1,nb):
        x_i = conv1D_full(inputs[:,:,i])
        outputs = tf.concat([ outputs , x_i ] , 2 )


    x = Dropout(0.5)(outputs)

    x = layers.Dense(1000, activation='relu',kernel_initializer='he_uniform',kernel_constraint=maxnorm(5))(x)
    x =  Dropout(0.5)(x)
    x = layers.Dense(600,activation='relu',kernel_constraint=maxnorm(5))(x)
    x = Dropout(0.5)(x)
    x = layers.Dense(200,activation='relu',kernel_constraint=maxnorm(5))(x)
    x = Dropout(0.5)(x)
    x = layers.Dense(50,activation='relu',kernel_constraint=maxnorm(5))(x)
    x = Dropout(0.5)(x)
    answer = layers.Dense(1, activation='sigmoid')(x)
    model = Model(inputs=inputs, outputs=answer)
    opt = optimizers.Adam(learning_rate=0.001)
    model.compile(loss='binary_crossentropy', optimizer=opt, metrics=['accuracy'])
    print(model.summary())


    tf.keras.utils.plot_model(model, show_shapes=True, show_layer_names=True, to_file='model_LSTM.png')
    from IPython.display import Image
    Image(retina=True, filename='model_LSTM.png')

    return model

训练


callback = tf.keras.callbacks.EarlyStopping(monitor='val_accuracy',mode='max', patience=10,verbose=1)
mc = tf.keras.callbacks.ModelCheckpoint('best_model_sep_norm_LSTM.h5', monitor='val_accuracy',mode='max',save_best_only=True,verbose=1)

model = multiple_cnn1D(18)
history = model.fit(X_scaled_arr_train,Y_arr_train,epochs=1,validation_split=0.2,batch_size=800,callbacks=[callback,mc])
        

这是训练时的摘要和时代细节

# Multi-layer neural networks
inputs = Input(shape=(10,))
hidden1 = Dense(10, activation='relu')(inputs)
hidden2 = Dense(30, activation='relu')(hidden1)
hidden3 = Dense(10, activation='relu')(hidden2)
output = Dense(1, activation='sigmoid')(hidden3)
model12 = Model(inputs=inputs, outputs=output)

# Model summary
print(model12.summary())

# Plot model graph
tf.keras.utils.plot_model(model12, show_shapes=True, show_layer_names=True, to_file='model_demo.png')
from IPython.display import Image
Image(retina=True, filename='model_demo.png')

但是当我尝试顺序模型时,它正在绘制模型

4

0 回答 0