小编Tas*_*lrs的帖子

火车正确堆叠自动编码器-Keras

我尝试在Keras(tf.keras)中构建一个堆栈式自动编码器。通过堆叠我的意思并不是很深。我为Keras找到的所有示例都在生成例如3个编码器层,3个解码器层,它们对其进行训练,并称之为一天。但是,本文介绍的一种训练堆叠式自动编码器(SAE)的正确方法似乎是:堆叠式降噪自动编码器:使用局部降噪标准在深度网络中学习有用的表示形式

简而言之,应该对SAE进行分层训练,如下图所示。训练完第1层后,将其用作训练第2层的输入。应将重建损失与第1层而不是输入层进行比较

这就是我的麻烦开始的地方。如何告诉Keras在哪些层上使用损失函数?

这是我的工作。由于Keras中已不存在自动编码器模块,因此我构建了第一个自动编码器,并将其编码器的权重(trainable = False)设置在第二个自动编码器的第一层(总共2层)中。然后,当我训练它时,它显然将重建的图层out_s2与输入图层in_s而不是图层1进行比较hid1

# autoencoder layer 1
in_s = tf.keras.Input(shape=(input_size,))
noise = tf.keras.layers.Dropout(0.1)(in_s)
hid = tf.keras.layers.Dense(nodes[0], activation='relu')(noise)
out_s = tf.keras.layers.Dense(input_size, activation='sigmoid')(hid)

ae_1 = tf.keras.Model(in_s, out_s, name="ae_1")
ae_1.compile(optimizer='nadam', loss='binary_crossentropy', metrics=['acc'])

# autoencoder layer 2
hid1 = tf.keras.layers.Dense(nodes[0], activation='relu')(in_s)
noise = tf.keras.layers.Dropout(0.1)(hid1)
hid2 = tf.keras.layers.Dense(nodes[1], activation='relu')(noise)
out_s2 = tf.keras.layers.Dense(nodes[0], activation='sigmoid')(hid2)

ae_2 = tf.keras.Model(in_s, out_s2, name="ae_2")
ae_2.layers[0].set_weights(ae_1.layers[0].get_weights())
ae_2.layers[0].trainable = False

ae_2.compile(optimizer='nadam', …
Run Code Online (Sandbox Code Playgroud)

python machine-learning deep-learning keras tensorflow

7
推荐指数
1
解决办法
2857
查看次数

在 TensorFlow 中导入庞大的非图像数据集

我有一个大数据集(300.000 个示例 x 33.000 个特征),这当然不适合内存。数据以 HDF5 格式保存。这些值大多为零(稀疏数据)。它们看起来像这样:

           Attr1    52  52  52  52  52  52  52  52 ...
           Attr2    umb umb umb umb umb umb umb umb ...
           CellID   TGC-1 TGG-1 CAG-1 TTC-1 GTG-1 GTA-1 CAA-1 CAC-1 ...

Acc     Gene                                      ...
243485  RP11-.3     0   0   0   0   0   0   0   0 ...
237613  FAM138A     0   0   0   0   0   0   0   0 ...
186092  OR4F5       0   0   0   0   0   0   0   0 ...
238009  RP11-.7     0   0   0   0   0 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning hdf5 neural-network tensorflow

5
推荐指数
1
解决办法
946
查看次数

tf.contrib.learn load_csv_with_header在TensorFlow 1.1中不起作用

我安装了最新的TensorFlow(v1.1.0),并尝试运行tf.contrib.learn快速入门教程,您可以在其中为IRIS数据集构建分类器.但是,当我尝试时:

training_set = tf.contrib.learn.datasets.base.load_csv_with_header(
    filename=IRIS_TRAINING,
    target_dtype=np.int,
    features_dtype=np.float32)
Run Code Online (Sandbox Code Playgroud)

我收到了一个StopIteration错误.

当我检查API时,我没有找到任何关于load_csv_with_header().他们是否在最新版本中更改了它而没有更新教程?我怎样才能解决这个问题?

编辑:如果这有任何区别,我使用Python3.6.

python tensorflow tflearn

3
推荐指数
1
解决办法
2625
查看次数