简体   繁体   English

ValueError: 层dense_1的输入0与层不兼容

[英]ValueError: Input 0 of layer dense_1 is incompatible with the layer

I'm using tensorflow for the first time and amusing it to classify data with 18 features into 4 classes.我第一次使用 tensorflow 并有趣地将具有 18 个特征的数据分为 4 个类。

The dimensions of X_train are: (14125,18). X_train 的维度为:(14125,18)。

This is my code:这是我的代码:

dataset = tf.data.Dataset.from_tensor_slices((np.array(X_train.values, dtype=float),
                               np.array(y_train.pet_category.values, dtype=float)))
train_data = dataset.shuffle(len(X_train)).batch(32)

vdataset = tf.data.Dataset.from_tensor_slices((np.array(X_val.values, dtype=float)))
val_data = vdataset.batch(32)

tfmodel = tf.keras.Sequential([
                  tf.keras.layers.Dense(15, activation=tf.nn.relu, input_shape=(18,1)),
                  tf.keras.layers.Flatten(),
                  tf.keras.layers.Dense(10, activation=tf.nn.relu),
                  tf.keras.layers.Dense(4, activation=tf.nn.softmax)
])

tfmodel.compile(optimizer='adam',
                loss=tf.keras.losses.CategoricalCrossentropy(),
                metrics=['accuracy'])

On calling tfmodel.fit(dataset, epochs=15, validation_data=val_data) , I'm getting the following error:在调用tfmodel.fit(dataset, epochs=15, validation_data=val_data)时,我收到以下错误:

ValueError: Input 0 of layer dense_1 is incompatible with the layer: expected axis -1 of input shape to have value 270 but received input with shape [18, 15]

I tried looking for similar questions but couldn't find anything that'd help.我尝试寻找类似的问题,但找不到任何有用的东西。 Would be really helpful to solve this issue对解决这个问题真的很有帮助

Edit: The issue was with the version.编辑:问题出在版本上。 It went away when I used a lower version of TensorFlow (v 2.1.0).当我使用较低版本的 TensorFlow (v 2.1.0) 时,它就消失了。

You are using the dataset int fit instead of train_data .您正在使用dataset int fit而不是train_data I assume you are using a DataFrame called X_train and y_train and I mimicked the same with numpy and it works now.我假设您使用的是名为X_trainy_train的 DataFrame,我用 numpy 进行了同样的模仿,现在它可以工作了。 See below.见下文。

import tensorflow as tf
import numpy as np

X_train = np.random.random((14125,18))
y_train = np.random.random((14125,1))

dataset = tf.data.Dataset.from_tensor_slices((X_train, y_train))
train_data = dataset.shuffle(len(X_train)).batch(32)
train_data = train_data.prefetch(
        buffer_size=tf.data.experimental.AUTOTUNE)

tfmodel = tf.keras.Sequential([
                  tf.keras.layers.Dense(15, activation=tf.nn.relu, input_shape=(18,)),
                  tf.keras.layers.Flatten(),
                  tf.keras.layers.Dense(10, activation=tf.nn.relu),
                  tf.keras.layers.Dense(4, activation=tf.nn.softmax)
])

tfmodel.compile(optimizer='adam',
                loss=tf.keras.losses.CategoricalCrossentropy(),
                metrics=['accuracy'])

tfmodel.fit(train_data, epochs=5)

Note: I didn't use the val_data注意:我没有使用val_data

Train for 442 steps
Epoch 1/5
442/442 [==============================] - 1s 2ms/step - loss: 7.8375 - accuracy: 1.4159e-04
Epoch 2/5
442/442 [==============================] - 1s 2ms/step - loss: 28.5034 - accuracy: 0.0000e+00
Epoch 3/5
442/442 [==============================] - 1s 1ms/step - loss: 17.8604 - accuracy: 0.0000e+00
Epoch 4/5
442/442 [==============================] - 1s 1ms/step - loss: 3.4244 - accuracy: 2.1239e-04
Epoch 5/5
442/442 [==============================] - 1s 2ms/step - loss: 3.2791 - accuracy: 0.0160
<tensorflow.python.keras.callbacks.History at 0x7f0d8c72d630>

It seems that the issue was with the version of tensorflow I was using (2.3.0) I tried with the nightly build and it gave the same error.似乎问题出在我使用的 tensorflow 版本(2.3.0)我尝试使用每晚构建时,它给出了相同的错误。 I downgraded to v2.1.0 and it worked我降级到 v2.1.0 并且它工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 ValueError:密集层的输入 0 不兼容 - ValueError: Input 0 of layer dense is incompatible ValueError: 层密集的输入 0 与层不兼容 - ValueError: Input 0 of layer dense is incompatible with the layer ValueError:层 dense_2 的输入 0 与层不兼容 - ValueError: Input 0 of layer dense_2 is incompatible with the layer ValueError:密集层的输入 0 与层不兼容:预期轴 -1。 tensorflow - ValueError: Input 0 of layer dense is incompatible with the layer: expected axis -1. tensorflow ValueError: Input 0 of layer dense is incompatible with the layer (新手问题) - ValueError: Input 0 of layer dense is incompatible with the layer (Newbie Question) ValueError:密集层的输入 0 与该层不兼容:其等级未定义,但该层需要定义的等级 - ValueError: Input 0 of layer dense is incompatible with the layer: its rank is undefined, but the layer requires a defined rank 密集层的输入 0 与该层不兼容(新手问题) - Input 0 of layer dense is incompatible with the layer (Newbie Question) ValueError:密集层的输入 0 与层不兼容:预期轴 -1 的值为 8,但接收到形状为 [None, 1] 的输入 - ValueError: Input 0 of layer dense is incompatible with the layer: expected axis -1 to have value 8 but received input with shape [None, 1] 从自动编码器定义编码器和解码器模型:ValueError: 层密集_3 的输入 0 与层不兼容: - Defining encoder and decoder models from autoencoder: ValueError: Input 0 of layer dense_3 is incompatible with the layer: ValueError: 层序列 1 的输入 0 与层不兼容 - ValueError: Input 0 of layer sequential_1 is incompatible with the layer
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM