Tensorflow:张量上的矩阵大小不兼容错误
Posted
技术标签:
【中文标题】Tensorflow:张量上的矩阵大小不兼容错误【英文标题】:Tensorflow: Matrix size-incompatible error on Tensors 【发布时间】:2019-03-18 17:07:18 【问题描述】:我正在尝试使用 Tensorflow 对单变量数值数据集进行二进制分类。我的数据集包含 6 个特征/变量,包括带有大约 90 个实例的标签。这是我的数据的预览:
sex,age,Time,Number_of_Warts,Type,Area,Result_of_Treatment
1,35,12,5,1,100,0
1,29,7,5,1,96,1
1,50,8,1,3,132,0
1,32,11.75,7,3,750,0
1,67,9.25,1,1,42,0
我正在使用 sklearn 的 train_test_split 函数拆分我的数据,如下所示:
X_train, X_test, y_train, y_test = train_test_split(data, y, test_size=0.33, random_state=42)
然后我使用以下代码将我的数据转换为张量:
X_train=tf.convert_to_tensor(X_train)
X_test = tf.convert_to_tensor(X_test)
y_train=tf.convert_to_tensor(y_train)
y_test = tf.convert_to_tensor(y_test)
在此之后,我开始构建一个简单的序列模型。
from keras import models
from keras import layers
from keras import models
from keras import layers
model = models.Sequential()
model.add(layers.Dense(16, activation='relu', input_shape=(60,)))
model.add(layers.Dense(16, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
model.compile(optimizer=optimizers.RMSprop(lr=0.001),
loss='binary_crossentropy',
metrics=['accuracy'])
调用fit函数时出现错误
history = model.fit(X_train,y_train,epochs=10,steps_per_epoch=200)
InvalidArgumentError: Matrix size-incompatible: In[0]: [60,6], In[1]: [60,16]
[[node dense_43/MatMul = MatMul[T=DT_FLOAT, _class=["loc:@training_8/RMSprop/gradients/dense_43/MatMul_grad/MatMul_1"], transpose_a=false, transpose_b=false, _device="/job:localhost/replica:0/task:0/device:CPU:0"](_identity_dense_43_input_0, dense_43/kernel/read)]]
【问题讨论】:
【参考方案1】:我觉得应该是的
model.add(layers.Dense(16, activation='relu', input_shape=(6,)))
你应该引用列而不是行
【讨论】:
以上是关于Tensorflow:张量上的矩阵大小不兼容错误的主要内容,如果未能解决你的问题,请参考以下文章