tflearn/张量流 |多流/多尺度/集成模型定义
Posted
技术标签:
【中文标题】tflearn/张量流 |多流/多尺度/集成模型定义【英文标题】:tflearn / tensorflow | Multi-stream/Multiscale/Ensemble model definition 【发布时间】:2016-11-27 12:58:52 【问题描述】:我正在尝试使用 tflearn 定义一个多流模型,以便有两个相同架构的副本(或者您可以将其视为一个集成模型),我使用同一图像的不同裁剪提供两个副本,但不确定我将如何使用 tflearn 实现它。
我基本上有这个数据:
X_train1, X_test1, y_train1, y_test1 : Dataset 1 (16images x 299 x 299px x 3ch)
X_train2, X_test2, y_train2, y_test2 : Dataset 2 (16images x 299 x 299px x 3ch)
到目前为止,我已经根据logical.py
example(简化代码)创建了这个:
netIn1 = tflearn.input_data(shape=[None, 299, 299, 3]
net1 = tflearn.conv_2d(netIn1, 16, 3, regularizer='L2', weight_decay=0.0001)
...
net1 = tflearn.fully_connected(net1, nbClasses, activation='sigmoid')
net1 = tflearn.regression(net1, optimizer=adam, loss='binary_crossentropy')
netIn2 = tflearn.input_data(shape=[None, 299, 299, 3]
net2 = tflearn.conv_2d(netIn2, 16, 3, regularizer='L2', weight_decay=0.0001)
...
net2 = tflearn.fully_connected(net2, nbClasses, activation='sigmoid')
net2 = tflearn.regression(net2, optimizer=adam, loss='binary_crossentropy')
然后通过连接合并两个网络:
net = tflearn.merge([net1, net2], mode = 'concat', axis = 1)
然后像这样开始训练:
# Training
model = tflearn.DNN(net, checkpoint_path='model',
max_checkpoints=10, tensorboard_verbose=3,
clip_gradients=0.)
model.fit([X1,X2], [Y1,Y2], validation_set=([testX1, testX2], [testY1,testY2]))
所以现在我的问题是如何在网络开始时解析输入?如何将 X1 拆分为 net1 并将 X2 拆分为 net2?
【问题讨论】:
【参考方案1】:您不需要拆分 X1 和 X2,它们将自动分配给您的输入层 netIn1 和 netIn2(按照您定义它们的相同顺序)。
【讨论】:
以上是关于tflearn/张量流 |多流/多尺度/集成模型定义的主要内容,如果未能解决你的问题,请参考以下文章
深度学习部署笔记(十五): CUDA_Run_Time_API_parallel_多流并行,以及多流之间互相同步等待的操作方式