类型错误:__init__() 缺少 1 个必需的位置参数:“单位”
Posted
技术标签:
【中文标题】类型错误:__init__() 缺少 1 个必需的位置参数:“单位”【英文标题】:TypeError: __init__() missing 1 required positional argument: 'units' 【发布时间】:2022-01-11 05:30:29 【问题描述】:我正在使用 python 和张量流,但我错过了“units”参数,我不知道如何解决它,看起来你的帖子主要是代码;请添加更多详细信息。看起来您的帖子主要是代码;请添加更多详细信息。
这里是代码
def createModel():
model = Sequential()
# first set of CONV => RELU => MAX POOL layers
model.add(Conv2D(32, (3, 3), padding='same', activation='relu', input_shape=inputShape))
model.add(Conv2D(32, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(64, (3, 3), padding='same', activation='relu'))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(64, (3, 3), padding='same', activation='relu'))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(output_dim=NUM_CLASSES, activation='softmax'))
# returns our fully constructed deep learning + Keras image classifier
opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS)
# use binary_crossentropy if there are two classes
model.compile(loss="categorical_crossentropy", optimizer=opt, metrics=["accuracy"])
return model
print("Reshaping trainX at..."+ str(datetime.now()))
#print(trainX.sample())
print(type(trainX)) # <class 'pandas.core.series.Series'>
print(trainX.shape) # (750,)
from numpy import zeros
Xtrain = np.zeros([trainX.shape[0],HEIGHT, WIDTH, DEPTH])
for i in range(trainX.shape[0]): # 0 to traindf Size -1
Xtrain[i] = trainX[i]
print(Xtrain.shape) # (750,128,128,3)
print("Reshaped trainX at..."+ str(datetime.now()))
print("Reshaping valX at..."+ str(datetime.now()))
print(type(valX)) # <class 'pandas.core.series.Series'>
print(valX.shape) # (250,)
from numpy import zeros
Xval = np.zeros([valX.shape[0],HEIGHT, WIDTH, DEPTH])
for i in range(valX.shape[0]): # 0 to traindf Size -1
Xval[i] = valX[i]
print(Xval.shape) # (250,128,128,3)
print("Reshaped valX at..."+ str(datetime.now()))
# initialize the model
print("compiling model...")
sys.stdout.flush()
model = createModel()
# print the summary of model
from keras.utils import print_summary
print_summary(model, line_length=None, positions=None, print_fn=None)
# add some visualization
from IPython.display import SVG
from keras.utils.vis_utils import model_to_dot
SVG(model_to_dot(model).create(prog='dot', format='svg'))
【问题讨论】:
你能提供一些你写的代码吗?在我们看到一些实际代码之前,这个问题很难回答 我已经写好了代码 文件“/Users/wafaaladawi/.spyder-py3/DR-kaggle.py”,第 265 行,在 createModel model.add(Dense(output_dim=NUM_CLASSES,activation='softmax')) 类型错误: __init__() 缺少 1 个必需的位置参数:'units' 请帮我找到解决办法 【参考方案1】:尝试更改此行:
model.add(Dense(output_dim=NUM_CLASSES, activation='softmax'))
到
model.add(Dense(NUM_CLASSES, activation='softmax'))
我没有使用 keras 的经验,但我在 Dense 的文档页面上找不到名为 output_dim
的参数。我认为您打算提供单位,但将其标记为 output_dim
【讨论】:
Yes.Done.Thanks【参考方案2】:Keras Dense 层文档如下:
keras.layers.Dense(units, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)
使用以下内容:
classifier.add(Dense(6, activation='relu', kernel_initializer='glorot_uniform',input_dim=11))
将在这里工作,单位表示 output_dim,表示我们在隐藏层中需要 6 个神经元。权重用uniform函数初始化,输入层有11个数据集的自变量(input_dim)来馈送上面的隐藏层。
【讨论】:
【参考方案3】:我认为是版本问题。在 Dense 的 keras 更新版本中,没有“output_dim”参数。
您可以查看 Dense 参数的此文档链接。
https://keras.io/api/layers/core_layers/dense/
tf.keras.layers.Dense(
units,
activation=None,
use_bias=True,
kernel_initializer="glorot_uniform",
bias_initializer="zeros",
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None,
**kwargs
)
所以第一个参数是“单位”,这是强制性的。
代替这一行:
model.add(Dense(output_dim=NUM_CLASSES, activation='softmax'))
使用这个:
model.add(Dense(units=NUM_CLASSES, activation='softmax'))
或
model.add(Dense(NUM_CLASSES, activation='softmax'))
【讨论】:
以上是关于类型错误:__init__() 缺少 1 个必需的位置参数:“单位”的主要内容,如果未能解决你的问题,请参考以下文章
为啥我收到错误:__init__() 缺少 1 个必需的位置参数?
类型错误:initialize() 缺少 1 个必需的位置参数:'url'
如何修复modelformset错误:__init __()缺少1个必需的位置参数:'user'
错误:__ init __()缺少1个必需的位置参数:'rec'