在卷积神经网络中,如何知道特定转换层的输出?(我正在使用keras构建CNN模型)
例如,如果我使用一维转换层,其中number_of_filters = 20,kernel_size = 10和input_shape(500,1)
cnn.add(Conv1D(20,kernel_size=10,strides=1, padding="same",activation="sigmoid",input_shape=(Dimension_of_input,1)))
Run Code Online (Sandbox Code Playgroud)
如果我使用的是二维转换层,其中number_of_filters = 64,kernal_size =(5,100),input_shape =(5,720,1)(高度,宽度,通道)
Conv2D(64, (5, 100),
padding="same",
activation="sigmoid",
data_format="channels_last",
input_shape=(5,720,1)
Run Code Online (Sandbox Code Playgroud)
以上两个转换层的输出数量是多少?在卷积神经网络中,是否有任何方程可用来了解卷积层的输出数量?
我使用 keras 和张量流来实现带有 CNN 的深度自动编码器:
所以基本上该模型类似于:
input_data = Input(shape=(40,500,1))
#encoder
x= Conv2D(32,kernel_size=(3,3), padding="same",activation='linear')(input_data)
encoded= Conv2D(15,kernel_size=(1,2), strides=(1,2), padding="same",activation='linear')(x)
#decoder
x= Conv2DTranspose(15,kernel_size=(1,2), padding="same",activation='linear')(encoded)
x= Conv2DTranspose(32,kernel_size=(3,3), padding="same",activation='linear')(x)
decoded = Conv2DTranspose(1, (3, 3), activation=activationfuntion, padding="same")(x)
autoencoder = Model(inputs=input_data,outputs=decoded)
encoder = Model(inputs=input_data,outputs=encoded)
Run Code Online (Sandbox Code Playgroud)
为了在训练期间保存最佳模型权重,我使用 ModelCheckpoint:
autoencoder.compile(loss='mean_squared_error', optimizer='rmsprop');
checkpoint=ModelCheckpoint('bestweight.best.hdf5',monitor='val_loss',verbose=1,save_best_only=True,mode='min');
callbacks_list=[checkpoint]
history_info =autoencoder.fit(x_train, x_train,
batch_size=batch_size,
epochs=50,
validation_data=(x_validation,x_validation),
callbacks=callbacks_list,
shuffle=True)
Run Code Online (Sandbox Code Playgroud)
然后在测试数据集上进行测试:
autoencoder.load_weights('bestweight.best.hdf5');
autoencoder.predict(test_data);
Run Code Online (Sandbox Code Playgroud)
我的问题是:
我知道如何保存整个自动编码器的最佳权重,但是有没有办法只保存编码器部分的最佳训练权重,以便我稍后可以使用它进行测试。所以我可以这样使用它:
encoder.load_weights('encoderbestweight.best.hdf5');
encoder.predict(test_data);
Run Code Online (Sandbox Code Playgroud) 我正在使用 savetxt 将名为“newresult”的 numpy 数组保存到文件中。
np.savetxt("test.csv", newresult, delimiter=",")
Run Code Online (Sandbox Code Playgroud)
'newresult' numpy 数组在一个循环内,所以在每个循环中 newresult 的内容都会改变。我想将新内容添加到 test.csv 文件中。
但是在每个循环中
np.savetxt("test.csv", newresult, delimiter=",")
Run Code Online (Sandbox Code Playgroud)
正在覆盖 test.csv 的内容,而我想添加到现有内容中。
例如,
循环 1:
newresult=
[[ 1 2 3 ]
[ 12 13 14]]
Run Code Online (Sandbox Code Playgroud)
循环 2
newresult=
[[ 4 6 8 ]
[ 19 14 15]]
Run Code Online (Sandbox Code Playgroud)
test.csv 内容是:
1, 2 ,3
12,13,14
4,6,8
19,14,15
Run Code Online (Sandbox Code Playgroud) 如果我有一个由字符串组成的单元格数组M(其中一些是字符串包含单词,其他包含数字)
M={'r' '2' '17'
'2' 's' '15'
'5' '10' 'rr'
}
Run Code Online (Sandbox Code Playgroud)
如何在第二列中获得最大数量,那么答案将是10?
我有以下字符串(str):
String str="${name}/${family}/${child}/${fname}"
Run Code Online (Sandbox Code Playgroud)
我在java中使用什么正则表达式模式来获取“${”和“}”之间的所有子字符串并将它们保存在一个arraylist中,因此结果将是一个具有以下值的数组列表:“name”、“family”、“孩子”,“名字”
keras ×2
python ×2
arraylist ×1
arrays ×1
autoencoder ×1
cell-array ×1
java ×1
keras-layer ×1
matlab ×1
numpy ×1
python-3.x ×1
regex ×1
string ×1
tensorflow ×1