输入矩阵中行和列之间的差异
Difference between rows and columns in input matrix
我正在尝试构建一个基因表达自动编码器作为我硕士论文的一部分。我的教授建议我从小处着手——取单个样本基因表达的 1 个时间点,并制作一个可以用更少信息表示它的网络(然后将其扩展到时间序列并做一些实验)。
所以我有 19040 个基因(或特征)和 1 个样本的 1 个时间点,我需要将它们输入自动编码器。按照老师的说法,我的输出层应该也是19040。
我应该输入哪种 input_shape?
- 输入(形状=(1,19040))
- 输入(形状=(19040,1))
- 输入(形状=(19040,))
在我的示例中,1 和 2 之间有区别吗?
data = pd.read_csv(filename, delimiter='\t', header=0)
data3d = array(data).reshape(5,19040,11)
x_train = keras.backend.transpose(data3d[0:1,:,1:2])
x = Dense(19040,activation = 'linear')(input_data)
encoded = Dense(10, activation='relu')(x)
decoded = Dense(19040, activation = 'linear')(encoded)
autoencoder = Model(input_data, decoded)
编辑:
部分数据
前 19040 行是 1 个样本,然后新的以相同的 EntrezID(基因 ID)开始,我在数据集中共有 5 个样本和 10 个时间点。
我认为您的问题的正确形状是选择 (1):
Input(shape=(1,19040))
Keras 模型未在架构规范中指定样本维度 - 这是从实际数据集中推断的。因此,如果我了解您的情况,您的输入数据将具有以下一般形状:
(num_samples, num_time_steps, num_features)
但现在,num_samples=1,num_time_steps=1,num_features=19040与前面提到的选项(1)一致。
当您泛化到更多时间步长时,您将更改为
Input(shape=(num_time_steps,19040))
关于你问题的第二部分,我认为选项 (1) 和 (2) 之间的区别在于,在每个时间步长的选项 (1) 中,你会将每个特征紧密连接到每个输出节点,其中在选项 (2) 中,每个时间步都是连接到每个节点的单个特征。
希望对您有所帮助。
我正在尝试构建一个基因表达自动编码器作为我硕士论文的一部分。我的教授建议我从小处着手——取单个样本基因表达的 1 个时间点,并制作一个可以用更少信息表示它的网络(然后将其扩展到时间序列并做一些实验)。
所以我有 19040 个基因(或特征)和 1 个样本的 1 个时间点,我需要将它们输入自动编码器。按照老师的说法,我的输出层应该也是19040。
我应该输入哪种 input_shape?
- 输入(形状=(1,19040))
- 输入(形状=(19040,1))
- 输入(形状=(19040,))
在我的示例中,1 和 2 之间有区别吗?
data = pd.read_csv(filename, delimiter='\t', header=0)
data3d = array(data).reshape(5,19040,11)
x_train = keras.backend.transpose(data3d[0:1,:,1:2])
x = Dense(19040,activation = 'linear')(input_data)
encoded = Dense(10, activation='relu')(x)
decoded = Dense(19040, activation = 'linear')(encoded)
autoencoder = Model(input_data, decoded)
编辑:
部分数据
前 19040 行是 1 个样本,然后新的以相同的 EntrezID(基因 ID)开始,我在数据集中共有 5 个样本和 10 个时间点。
我认为您的问题的正确形状是选择 (1):
Input(shape=(1,19040))
Keras 模型未在架构规范中指定样本维度 - 这是从实际数据集中推断的。因此,如果我了解您的情况,您的输入数据将具有以下一般形状:
(num_samples, num_time_steps, num_features)
但现在,num_samples=1,num_time_steps=1,num_features=19040与前面提到的选项(1)一致。
当您泛化到更多时间步长时,您将更改为
Input(shape=(num_time_steps,19040))
关于你问题的第二部分,我认为选项 (1) 和 (2) 之间的区别在于,在每个时间步长的选项 (1) 中,你会将每个特征紧密连接到每个输出节点,其中在选项 (2) 中,每个时间步都是连接到每个节点的单个特征。
希望对您有所帮助。