Tensorflow实现MultiInput & Merge操作
2017-02-08 16:31
405 查看
1、Keras的Sequential模型的理解:
Sequential可以理解为容器,将网络中的各个层都通过Add操作,添加到里面。
2、Tensorflow的MultiInput操作和Merge操作
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.layers import Merge
from keras.utils.visualize_util import plot
left_branch = Sequential()
left_branch.add(Dense(32, input_dim=784))
right_branch = Sequential()
right_branch.add(Dense(32, input_dim=784))
merged = Merge([left_branch, right_branch], mode='concat')
final_model = Sequential()
final_model.add(merged)
final_model.add(Dense(10, activation='softmax'))
plot(final_model, to_file='model.png',show_shapes=True)
说明:
1、对于多输入,每个Input通路,也是一个Sequential,在该Sequential中进行完操作后。再将该2个sequential进行Merge.
2、合并的模型也需要一个新的Sequential,将新的merged层放进去.
网络结构图如下所示:
3、Multi Input 和 Multi output的例子
代码如下:
from keras.utils.visualize_util import plot
from keras.layers import Input, Embedding, LSTM, Dense, merge
from keras.models import Model
main_input = Input(shape=(100,), dtype='int32', name='main_input')
x = Embedding(output_dim=512, input_dim=10000, input_length=100)(main_input)
lstm_out = LSTM(32)(x)
auxiliary_output = Dense(1, activation='sigmoid', name='aux_output')(lstm_out)
auxiliary_input = Input(shape=(5,), name='aux_input')
x = merge([lstm_out, auxiliary_input], mode='concat')
x = Dense(64, activation='relu')(x)
x = Dense(64, activation='relu')(x)
x = Dense(64, activation='relu')(x)
main_output = Dense(1, activation='sigmoid', name='main_output')(x)
model = Model(input=[main_input, auxiliary_input], output=[main_output, auxiliary_output])
plot(model, to_file='model.png',show_shapes=True)
得到的网络结构如下:
Sequential可以理解为容器,将网络中的各个层都通过Add操作,添加到里面。
2、Tensorflow的MultiInput操作和Merge操作
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.layers import Merge
from keras.utils.visualize_util import plot
left_branch = Sequential()
left_branch.add(Dense(32, input_dim=784))
right_branch = Sequential()
right_branch.add(Dense(32, input_dim=784))
merged = Merge([left_branch, right_branch], mode='concat')
final_model = Sequential()
final_model.add(merged)
final_model.add(Dense(10, activation='softmax'))
plot(final_model, to_file='model.png',show_shapes=True)
说明:
1、对于多输入,每个Input通路,也是一个Sequential,在该Sequential中进行完操作后。再将该2个sequential进行Merge.
2、合并的模型也需要一个新的Sequential,将新的merged层放进去.
网络结构图如下所示:
3、Multi Input 和 Multi output的例子
代码如下:
from keras.utils.visualize_util import plot
from keras.layers import Input, Embedding, LSTM, Dense, merge
from keras.models import Model
main_input = Input(shape=(100,), dtype='int32', name='main_input')
x = Embedding(output_dim=512, input_dim=10000, input_length=100)(main_input)
lstm_out = LSTM(32)(x)
auxiliary_output = Dense(1, activation='sigmoid', name='aux_output')(lstm_out)
auxiliary_input = Input(shape=(5,), name='aux_input')
x = merge([lstm_out, auxiliary_input], mode='concat')
x = Dense(64, activation='relu')(x)
x = Dense(64, activation='relu')(x)
x = Dense(64, activation='relu')(x)
main_output = Dense(1, activation='sigmoid', name='main_output')(x)
model = Model(input=[main_input, auxiliary_input], output=[main_output, auxiliary_output])
plot(model, to_file='model.png',show_shapes=True)
得到的网络结构如下:
相关文章推荐
- 基于深度学习Keras框架的训练数据增强方法(转)
- Theano测试错误:Intel MKL FATAL ERROR: Cannot load libmkl_avx.so or libmkl_def.so 错误解决方法[转]
- [Keras]学习笔记(1):optimizers
- 关于adaboost
- 从决策树到随机森林--小结
- Keras模型
- 在windows7(64位)下, keras的安装及错误处理
- 基于Attention Model的Aspect level文本情感分类---用Python+Keras实现
- Keras的安装与搭建
- Keras学习笔记01——快速搭建神经网络结构
- keras学习(2)
- 安装keras,教育网速度比较快
- ubuntu-anaconda-keras配置
- Windows10 64Bit完美配置Theano并实现GPU加速并解决((CNMeM is disable,CuDNN not available))
- 小白玩Keras
- 深度學習 Keras MNIST 正確率可視化 (Cambridge Coding Academy 補充二)
- 深度學習 Keras MNIST 模型可視化 (Cambridge Coding Academy 補充一)
- 深度學習 Keras CIFAR-10 數據可視化
- 深度學習 Keras MNIST 數據可視化
- Keras API