【发布时间】:2019-04-15 19:46:10
【问题描述】:
我想在我未标记的数据上训练一个 CNN,从我在 Keras/Kaggle/TF 文档或 Reddit 线程上阅读的内容来看,看来我必须事先标记我的数据集。有没有办法以无人监督的方式训练 CNN?
我无法理解如何初始化 y_train 和 y_test(其中 y_train 和 y_test 代表通常的含义)
关于我的数据集的信息如下:
- 我有 50,000 个尺寸为 30 x 30 的矩阵。
- 每个矩阵分为9个子区域(为便于理解,用竖线和横线分隔)。
- 如果一个子区域至少有一个等于 1 的元素,则称该子区域为 活动。如果该子区域的所有元素都等于 0,则该子区域为 不活动。
- 对于下面显示的第一个示例,我应该得到活动子区域的名称作为输出,所以这里是 (1, 4, 5, 6, 7, 9)。
- 如果没有子区域处于活动状态,如第二个示例所示,则输出应为 0。
第二个例子:输出 - 0 创建这些矩阵后,我执行了以下操作:
- 我将这些矩阵重新整形为尺寸为 900 x 1 的向量后,将它们放入 CSV 文件中。
- 基本上,CSV 中的每一行包含 900 列,其值为 0 或 1。
- 我的分类问题的类别是从 0 到 9 的数字,其中 0 表示没有标签具有活动 (值=1) 值的类别。
对于我的模型,我想要以下内容:
- 输入:如上所述的 900 x 1 向量。
-
输出: 0-9 之间的值之一,
其中 1-9 表示活动子区域,0 表示无活动子区域。
我做了什么:
我能够将 CSV 文件中的数据检索到数据框中,并将数据框拆分为 x_train 和 x_test我>。但我无法理解如何设置我的 y_train 和 y_test 值。
我的问题似乎与 MNIST 数据集非常相似,只是我没有标签。我可以在没有标签的情况下训练模型吗?
我的代码目前如下所示:
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
# Read the dataset from the CSV file into a dataframe
df = pd.read_csv("bci_dataset.csv")
# Split the dataframe into training and test dataset
train, test = train_test_split(df, test_size=0.2)
x_train = train.iloc[:, :]
x_test = test.iloc[:, :]
print(x_train.shape)
print(x_test.shape)
提前感谢您阅读整篇文章并帮助我!
【问题讨论】:
-
除非我遗漏了一些东西,否则标签可以从数据本身中轻松推断出来。
-
是的,我会这样做的。事实证明,为此运行 CNN 并没有多大意义。我会在以后使用它。
标签: python tensorflow keras conv-neural-network