[英]Keras: transposing kernel of Conv2D layer for reuse in another Conv2D layer
[英]Keras - copy Conv2D layer
我想复制一个Conv2D图层。
我尝试了这个:
编辑:我已经将示例代码更改为mcve
Edit2:我已经根据fuglede的答案更改了代码
from keras.models import Sequential
from keras.layers import Dense, Conv2D, Flatten
from keras.datasets import mnist
from keras.utils import to_categorical
import matplotlib.pyplot as plt
import numpy as np
import random
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train = X_train.reshape(60000, 28, 28, 1)
X_test = X_test.reshape(10000, 28, 28, 1)
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)
model = Sequential()
model.add(Conv2D(random.randint(32, 64), kernel_size=random.randint(1, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(Conv2D(32, kernel_size=3, activation='relu'))
model.add(Flatten())
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
other_model = Sequential()
layer = model.layers[1]
other_model.add(Conv2D(random.randint(32, 64), kernel_size=random.randint(1, 3), activation='relu', input_shape=(28, 28, 1)))
copy_layer = Conv2D(layer.filters, kernel_size=layer.kernel_size, activation='relu')
other_model.add(copy_layer)
copy_layer.set_weights(layer.get_weights())
但我收到此错误:
ValueError: Layer weight shape (3L, 3L, 61L, 32L) not compatible with provided weight shape (3L, 3L, 40L, 32L)
编辑:这样做的目的是,我正在使用一种遗传算法来进化/“训练”一组神经网络,这是交叉步骤的一部分。
发生这种情况是因为仅在将图层添加到模型后才对其进行初始化。 如果交换示例的最后两行,它应该可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.