我是 TensorFlow 的新手,正在尝试建立研究生院录取的预测模型。
通过使用 pandas,我能够将训练数据集准备为列表。
CSV 文件的数据由 4 列 425 行组成(第一列(承认)是答案,另外 3 列(gre、gpa、rank)是训练数据)如下所示。
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)
但是,我有一些错误,如下所示。
我尝试更改批量大小和内核大小,但仍然出现相同的错误。
有人可以帮我纠正错误吗?
谢谢
================================================ ====================
我非常感谢您的帮助。我更新了下面的新错误。
答案 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)