简体   繁体   English

警告:tensorflow:Model 是用形状构造的(无,...)

[英]WARNING:tensorflow:Model was constructed with shape (None, …)

I have a classification problem (0 or 1) with 78 features.我有一个包含 78 个特征的分类问题(0 或 1)。 Let's say I have that data in a dataframe with 78 columns and 202 rows, each cell value holding an integer in the range [0, infinity).假设我在 dataframe 中有该数据,有 78 列和 202 行,每个单元格值在 [0,无穷大)范围内保存一个 integer。

Trying to achieve prediction with TensorFlow, when I fit my model I get the following warning:尝试使用 TensorFlow 实现预测,当我装上 model 时,我收到以下警告:

WARNING:tensorflow:Model was constructed with shape (None, 101, 78) for input Tensor("input_2:0", shape=(None, 101, 78), dtype=float32), but it was called on an input with incompatible shape (101, 78).

I would have thought my shape definition was correct, so why am I getting this warning?我会认为我的形状定义是正确的,那么为什么我会收到这个警告? Perhaps I'm misunderstanding how to use the framework.也许我误解了如何使用该框架。

X_train, X_test, y_train, y_test = train_test_split(df_x, series_y, random_state=1, test_size=0.5)
numpy_x_train = X_train.to_numpy()
numpy_y_train = y_train.to_numpy()
numpy_x_test = X_test.to_numpy()

shape_x = len(X_train)
shape_y = len(X_train.columns)
inputs = keras.Input(shape=(shape_x, shape_y))

x = Rescaling(scale=1.0 / 255)(inputs)

num_classes = 1
outputs = layers.Dense(num_classes, activation="softmax")(x)

model = keras.Model(inputs=inputs, outputs=outputs)
processed_data = model(numpy_x_train)

optimiser = keras.optimizers.RMSprop(learning_rate=1e-3)
loss = keras.losses.CategoricalCrossentropy()

model.compile(optimizer=optimiser, loss=loss)

history = model.fit(numpy_x_train, numpy_y_train, batch_size=32, epochs=10)

here a full example based on your problem.这里有一个基于您的问题的完整示例。 you have 2D data so in the input layer you have to specify only the feature dimension and not also the sample dimension.您有 2D 数据,因此在输入层中您必须仅指定特征维度而不是样本维度。 you also are carrying out a binary classification task so the best choice is to use a final dense layer with 1 dimension, a sigmoid activation function, and binary crossentropy as a loss.您还在执行二进制分类任务,因此最好的选择是使用具有 1 维的最终密集层、sigmoid 激活 function 和二进制交叉熵作为损失。 the predicted class will be 1 if the prob are > 0.5 otherwise it is 0如果概率 > 0.5,则预测的 class 将为 1,否则为 0

from tensorflow import keras
import numpy as np

# create dummy data
train_size, test_size = 101, 101
n_features = 78
num_classes = 2 # 0 or 1

numpy_x_train = np.random.uniform(0,256, (train_size,n_features))
numpy_y_train = np.random.randint(0,num_classes,train_size)
numpy_x_test = np.random.uniform(0,256, (test_size,n_features))
numpy_y_test = np.random.randint(0,num_classes,test_size)

# rescaling data
numpy_x_train = numpy_x_train / 255
numpy_x_test = numpy_x_test / 255

# define model
inputs = keras.layers.Input(shape=(numpy_x_train.shape[1],))
outputs = keras.layers.Dense(1, activation="sigmoid")(inputs)

optimiser = keras.optimizers.RMSprop(learning_rate=1e-3)
loss = keras.losses.BinaryCrossentropy()

model = keras.Model(inputs=inputs, outputs=outputs)
model.compile(optimizer=optimiser, loss=loss)

history = model.fit(numpy_x_train, numpy_y_train, batch_size=32, epochs=10)

# get test predictions
test_prob = model.predict(numpy_x_test).ravel()
test_class = (test_prob>0.5)+0 # if prob > 0.5 is 1 else is 0

暂无
暂无

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

相关问题 警告:tensorflow:Model 是按形状构造的(无、66、200、3) - WARNING:tensorflow:Model was constructed with shape (None, 66, 200, 3) python 中的神经网络:警告:tensorflow:Model 是用形状(无,7)构建的 - Neural Network in python: WARNING:tensorflow:Model was constructed with shape (None, 7) for input 警告:警告:tensorflow:Model 是用形状(无,150)构造的,但它是在形状不兼容的输入上调用的(无,1) - WARNING: WARNING:tensorflow:Model was constructed with shape (None, 150) , but it was called on an input with incompatible shape (None, 1) WARNING:tensorflow:Model 是用形状 (None, 188) 构造的输入,但它是在形状不兼容的输入上调用的 (188,) - WARNING:tensorflow:Model was constructed with shape (None, 188) for input, but it was called on an input with incompatible shape (188,) tensorflow:Model 是用形状 (None, None, 6) 构造的,但它是在形状不兼容的输入上调用的 - tensorflow:Model was constructed with shape (None, None, 6), but it was called on an input with incompatible shape Tensorflow:Model 是用形状 (None, 28, 28) 构造的,但它是在形状不兼容的输入上调用的 (None, 28) - Tensorflow:Model was constructed with shape (None, 28, 28) , but it was called on an input with incompatible shape (None, 28) 警告:tensorflow:Model 是用输入 Tensor() 的形状构建的。 但它是在形状不兼容的输入上调用的 - WARNING:tensorflow:Model was constructed with shape for input Tensor(). but it was called on an input with incompatible shape 低准确度和警告:警告:tensorflow:模型是用形状构建的? 我应该改变什么 - Low accuracy and WARNING: WARNING:tensorflow: Model was constructed with shape? What should I want to change Model 是用形状(无,28)问题构造的 - Model was constructed with shape (None, 28) problem 警告:tensorflow:模型是用形状 (20, 37, 42) 构建的,用于输入 Tensor(“input_5:0”, shape=(20, 37, 42), dtype=float32),但是 - WARNING:tensorflow:Model was constructed with shape (20, 37, 42) for input Tensor(“input_5:0”, shape=(20, 37, 42), dtype=float32), but
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM