Tensorflow,从 csv 文件读取数据时出现 Conv1D 错误

时间:2021-02-17 12:26:57

标签: python tensorflow

我是 TensorFlow 的新手,正在尝试建立研究生院录取的预测模型。

通过使用 pandas,我能够将训练数据集准备为列表。

CSV 文件的数据由 4 列 425 行组成(第一列(承认)是答案,另外 3 列(gre、gpa、rank)是训练数据)如下所示。

enter image description here

import pandas as pd

data = pd.read_csv('gpascore.csv')
data = data.dropna()

data_y = data['admit'].values
data_x = []

for i, rows in data.iterrows():
   data_x.append([rows['gre'], rows['gpa'], rows['rank']])

我尝试通过添加如下所示的一维卷积层和最大池化层来修改预测模型。 最初,预测模型仅包含 Dense 层。

import numpy as np    
import tensorflow as tf

model = tf.keras.models.Sequential([
   tf.keras.layers.Conv1D(32, 3, activation='relu', input_shape=(3)),
   tf.keras.layers.MaxPooling1D(1),
   tf.keras.layers.Flatten(),
   tf.keras.layers.Dense(64, activation='tanh'),   
   tf.keras.layers.Dense(1, activation='sigmoid'),
])

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(np.array(data_x), np.array(data_y), epochs=100)

score = model.evaluate(data_x, data_y)
print(score)

pred = model.predict([ [750, 3.70, 3], [400, 2.2, 1] ])
print(pred)

但是,我有一些错误,如下所示。

enter image description here

我尝试更改批量大小和内核大小,但仍然出现相同的错误。

有人可以帮我纠正错误吗?

谢谢

================================================ ====================

我非常感谢您的帮助。我更新了下面的新错误。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

CONv1D 线的问题

tf.keras.layers.Conv1D(32, 3, activation='relu', input_shape=(3))

序列上的 Conv1D 需要 3 维输入。 [batch, time_steps, single_vector] 为您的输入添加额外的维度。 首先将数据帧转换为 numpy_array

data_x = data_x.to_numpy()
data_x = data_x.reshape(-1,425,3)

model = tf.keras.models.Sequential([
   tf.keras.layers.Conv1D(32, 3, activation='relu', input_shape=[None,3]),
   tf.keras.layers.MaxPooling1D(1),
   tf.keras.layers.Flatten(),
   tf.keras.layers.Dense(64, activation='tanh'),   
   tf.keras.layers.Dense(1, activation='sigmoid'),
])

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(X, np.array(data_y), epochs=100)
相关问题