Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python STFT和DWT输入数据的深度学习参数_Python_Keras_Deep Learning_Conv Neural Network_Hyperparameters - Fatal编程技术网

Python STFT和DWT输入数据的深度学习参数

Python STFT和DWT输入数据的深度学习参数,python,keras,deep-learning,conv-neural-network,hyperparameters,Python,Keras,Deep Learning,Conv Neural Network,Hyperparameters,我在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), p

我在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

您应该做的第一件事是安装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']

你能再解释一下吗。我不能完全理解这个问题。你想获得哪些参数?@AbdullahDeliogullari我是指在训练阶段学习的连接权重。所以你想在训练期间获得CNN网络每一层的权重?我明白了吗?@AbdullahDeliogullari我用这两行,我得到了每个历元的权重,但我不知道如何打开文件
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文件,无法打开。此外,您正在寻找了解此文件格式的方法。我说得对吗?我不明白我在哪里添加了这些行以及为什么
#模型列表的层名称(f.keys())#在运行模型和本地目录中安装的hd5文件后,您可以使用这些层作为索引d=f['dense']['dense\u 1']['kernel:0']
,运行此代码检查此文件。运行我的模型后,我在控制台中写入
import h5py f=h5py.file('mytestfile.hdf5','r')列表(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_Poolg3D_1'、'max_Poolg3D_3']
下一步我应该做什么?以及如何打开文件?这些是保存模型参数的字典的键。要探索这些参数,可以使用print(f['dense']['dense1'])或print(f['dense_1'])。您必须查看此分层字典。读取此类文件没有简单的方法。另一种方法可以帮助您可视化分层表。我的目标是了解我的模型中的权重和偏差数量,而不是打开hdf5。是否有其他方法只知道权重和偏差数量??