作者:婷婷爱BB | 来源:互联网 | 2023-01-23 23:44
我目前正在尝试重新创建Unet.在需要合并两层输出的"upconvolution"部分,我得到了上述错误.(TypeError:init()获得参数'axis'的多个值)
Keras版本:2.0.6
Tensorflow-gpu:1.2.1
代码段:
import gzip
import os
from six.moves import urllib
import tensorflow as tf
import numpy as np
from keras.models import Sequential, Model
from keras.layers import Input, Dropout, Flatten, Concatenate
from keras.layers import Conv2D, MaxPool2D, Conv2DTranspose
from keras.utils import np_utils
import keras.callbacks
# Define model architecture
input1 = Input((X_train.shape[1], X_train.shape[2], 1))
conv1 = Conv2D(64,(3,3), activation='relu', padding='same')(input1)
conv1 = Dropout(0.2)(conv1)
conv1 = Conv2D(64,(3,3), activation='relu', padding='same')(conv1)
pool1 = MaxPool2D(pool_size=(2,2))(conv1)
conv2 = Conv2D(128,(3,3), activation='relu', padding='same')(pool1)
conv2 = Dropout(0.2)(conv2)
conv2 = Conv2D(128,(3,3), activation='relu')(conv2)
pool2 = MaxPool2D(pool_size=(2,2))(conv2)
conv3 = Conv2D(256,(3,3), activation='relu', padding='same')(pool2)
conv3 = Dropout(0.2)(conv3)
conv3 = Conv2D(256,(3,3), activation='relu', padding='same')(conv3)
pool3 = MaxPool2D(pool_size=(2,2))(conv3)
conv4 = Conv2D(512,(3,3), activation='relu', padding='same')(pool3)
conv4 = Conv2D(512,(3,3), activation='relu', padding='same')(conv4)
up5 = Concatenate([Conv2DTranspose(256, (2,2), strides=(2,2),padding='same')(conv4), conv3], axis=3)
conv5 = Conv2D(256,(3,3), activation='relu', padding='same')(up5)
conv5 = Conv2D(256,(3,3), activation='relu', padding='same')(conv5)
详细错误消息:
Traceback (most recent call last):
File "", line 1, in
runfile('C:/Users/.../MNIST_Unet_new.py', wdir='C:/Users/.../Documents/KerasTutorials')
File "C:\ProgramData\Anaconda3\envs\tensorflow-gpu\lib\site-packages\spyder\utils\site\sitecustomize.py", line 688, in runfile
execfile(filename, namespace)
File "C:\ProgramData\Anaconda3\envs\tensorflow-gpu\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/.../MNIST_Unet_new.py", line 107, in
up5 = Concatenate([Conv2DTranspose(256, (2,2), strides=(2,2),padding='same')(conv4), conv3], axis=3)
TypeError: __init__() got multiple values for argument 'axis'
Midas.Inc..
9
我找到了似乎有效的解决方案!
我对代码做了两处更改.
我使用keras.layers.concatenate而不是使用keras.layers.Concatenate
我从串联中"排除"了Conv2dTranspose步骤
相关的代码段现在看起来像这样
trans5 = Conv2DTranspose(256, (2,2), strides=(2,2),padding='same')(conv4)
up5 = keras.layers.concatenate([trans5, conv3], axis=3)
这可能是keras中的某种错误吗?我应该报告这个问题吗?
非常感谢你的帮助.欣赏它!
1> Midas.Inc..:
我找到了似乎有效的解决方案!
我对代码做了两处更改.
我使用keras.layers.concatenate而不是使用keras.layers.Concatenate
我从串联中"排除"了Conv2dTranspose步骤
相关的代码段现在看起来像这样
trans5 = Conv2DTranspose(256, (2,2), strides=(2,2),padding='same')(conv4)
up5 = keras.layers.concatenate([trans5, conv3], axis=3)
这可能是keras中的某种错误吗?我应该报告这个问题吗?
非常感谢你的帮助.欣赏它!