【问题标题】:parameters of deep learning for STFT and DWT input dataSTFT 和 DWT 输入数据的深度学习参数
【发布时间】:2020-08-04 10:28:18
【问题描述】:

我在 STFT 数据和离散小波变换数据上创建 CNN 模型。我想在 python 的 2 个输入数据上获得我的深度学习模型的权重和偏差的数量。该怎么做??

任何帮助将不胜感激。

代码:

def createModel():
   with tf.device("cpu"):
        input_shape=(1, 22, 5, 3844)
        model = Sequential()
        model.add(Conv3D(16, (22, 5, 5), strides=(1, 2, 2), padding='same',activation='relu',data_format= "channels_first", input_shape=input_shape))

        model.add(keras.layers.MaxPooling3D(pool_size=(1, 2, 2),data_format= "channels_first",  padding='same'))

        model.add(BatchNormalization())
        model.add(Conv3D(32, (1, 3, 3), strides=(1, 1,1), padding='same',data_format= "channels_first",  activation='relu'))#incertezza se togliere padding

        model.add(keras.layers.MaxPooling3D(pool_size=(1,2, 2),data_format= "channels_first", ))
        model.add(BatchNormalization())
        model.add(Conv3D(64, (1,3, 3), strides=(1, 1,1), padding='same',data_format= "channels_first",  activation='relu'))#incertezza se togliere padding
        model.add(keras.layers.MaxPooling3D(pool_size=(1,2, 2),data_format= "channels_first",padding='same' ))
        model.add(BatchNormalization())
        model.add(Dense(64, input_dim=64,kernel_regularizer=regularizers.l2(0.0001), activity_regularizer=regularizers.l1(0.0001)))
        model.add(Flatten())
        model.add(Dropout(0.5))
        model.add(Dense(256, activation='sigmoid'))
        model.add(Dropout(0.5))
        model.add(Dense(2, activation='softmax'))
        opt_adam = keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
        model.compile(loss='categorical_crossentropy', optimizer=opt_adam, metrics=['accuracy'])
    return model

【问题讨论】:

  • 您能否添加更多解释。我无法正确理解这个问题。你想获取哪些参数?
  • @AbdullahDeliogullari 我的意思是在训练阶段学习的连接权重。
  • 那么您想在训练期间获得 CNN 网络每一层的权重吗?我理解对了吗?
  • @AbdullahDeliogullari 我使用这 2 行,我得到每个时代的权重,但我不知道如何打开文件? filepath_1="weights.{epoch:02d}-{val_loss:.2f}.hdf5" call=keras.callbacks.callbacks.ModelCheckpoint(filepath_1, monitor='val_loss', verbose=1, save_best_only=False, save_weights_only=True, mode='auto', period=1) 和如何知道我的模型的权重和偏差的数量??
  • 好的,所以你有 hd5 文件,无法打开。此外,您正在寻找一种方法来了解此文件的格式。我说的对吗?

标签: python keras deep-learning conv-neural-network hyperparameters


【解决方案1】:

你应该做的第一件事是安装 h5py

pip install h5py

然后你就可以在这个文件中探索keras模型了

import h5py
f = h5py.File('mytestfile.hdf5', 'r')
# layer names of your model
list(f.keys())
# you can use this layers as index
d = f['dense']['dense_1']['kernel:0']

【讨论】:

  • 我不明白我在哪里添加这些行以及为什么# layer names of your model list(f.keys()) # you can use this layers as index d = f['dense']['dense_1']['kernel:0']
  • 运行您的模型和安装在本地目录中的 hd5 文件后,运行此代码以检查此文件。
  • 运行我的模型后,我在控制台中写入import h5py f = h5py.File('mytestfile.hdf5', 'r') list(f.keys()) 这个输出出现['batch_normalization_1', 'batch_normalization_2', 'batch_normalization_3', 'conv3d_1', 'conv3d_2', 'conv3d_3', 'dense_1', 'dense_2', 'dropout_1', 'dropout_2', 'flatten_1', 'max_pooling3d_1', 'max_pooling3d_2', 'max_pooling3d_3'] 下一步我应该做什么??以及如何打开文件??
  • 这些是保存模型参数的字典的键。要探索这些参数,您可以使用 print(f['dense']['dense1']) 或 print(f['dense_1'])。您必须查看此分层字典。没有简单的方法来读取这些文件。另一个选项可以是pypi.org/project/ViTables,它可以帮助您可视化分层表
  • 我的目标是知道我的模型中的权重和偏差的数量,而不是打开 hdf5 。还有其他方法可以知道权重和偏差的数量吗??
猜你喜欢
  • 1970-01-01
  • 2023-03-29
  • 2017-10-20
  • 1970-01-01
  • 2020-02-07
  • 2015-10-09
  • 2017-03-04
  • 2021-01-20
  • 2018-12-27
相关资源
最近更新 更多