了解 Keras 错误: 类型错误: 传递给参数“shape” 的值具有数据类型 float3

所以我有这行代码:


history = model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1, validation_data=(X_val, y_val))

这会引发此错误:


File "CNN.py", line 125, in model

    history = model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1, validation_data=(X_val, y_val))

  File "C:\Users\Boche\AppData\Local\conda\conda\envs\ExerFloorTracking\lib\site-packages\keras\engine\training.py", line 952, in fit

    batch_size=batch_size)

  File "C:\Users\Boche\AppData\Local\conda\conda\envs\ExerFloorTracking\lib\site-packages\keras\engine\training.py", line 677, in _standardize_user_data

    self._set_inputs(x)

  File "C:\Users\Boche\AppData\Local\conda\conda\envs\ExerFloorTracking\lib\site-packages\keras\engine\training.py", line 589, in _set_inputs

    self.build(input_shape=(None,) + inputs.shape[1:])

  File "C:\Users\Boche\AppData\Local\conda\conda\envs\ExerFloorTracking\lib\site-packages\keras\engine\sequential.py", line 221, in build

    x = layer(x)

  File "C:\Users\Boche\AppData\Local\conda\conda\envs\ExerFloorTracking\lib\site-packages\keras\engine\base_layer.py", line 431, in __call__

    self.build(unpack_singleton(input_shapes))

  File "C:\Users\Boche\AppData\Local\conda\conda\envs\ExerFloorTracking\lib\site-packages\keras\layers\core.py", line 866, in build

    constraint=self.kernel_constraint)

  File "C:\Users\Boche\AppData\Local\conda\conda\envs\ExerFloorTracking\lib\site-packages\keras\legacy\interfaces.py", line 91, in wrapper

    return func(*args, **kwargs)

  File "C:\Users\Boche\AppData\Local\conda\conda\envs\ExerFloorTracking\lib\site-packages\keras\engine\base_layer.py", line 249, in add_weight

    weight = K.variable(initializer(shape),


批大小设置为 100,epochs 设置为 20。我不明白为什么会出现错误。所有需要为整数的值都是整数。我也不明白这里的参数“shape”是什么意思。如果您没有看到代码中有什么错误,如果您能向我解释此错误以及触发它的原因,我将不胜感激。



狐的传说
浏览 144回答 1
1回答

翻阅古今

所以我解决了这个问题。它来自另一行代码。这些是我的代码中在拟合之前出现的行:model.add(Dense(num_neurons, activation= cnn_params["activation_output"]))model.add(Dense(cnn_params["final_dense"]["number_neurons"], activation= cnn_params["activation_output"]))#COMPILING MODELmodel.compile(loss=keras.losses.categorical_crossentropy, optimizer=keras.optimizers.SGD(lr=learning_rate), metrics=['accuracy', 'categorical_accuracy'])在第一行中,您可以看到参数 。我使用功能计算了这个参数。该功能的输出是浮点数。将其转换为整数,如下所示:num_neuronsmodel.add(Dense(int(num_neurons), activation= cnn_params["activation_output"]))解决了问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python