Sequential
one input, one output
from tensorflow.keras.models import Sequential, Model
from tensorflow.keras.layers import Dense, Flatten, Input
def buind_fn():
model = Sequential()
model.add(Flatten(input_shape=(4,)))
model.add(Dense(128, activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(3, activation='softmax'))
model.summary()
model.compile(loss='categorical_crossentropy', metrics=['acc'], optimizer='adam')
return model
model.fit(iris.iloc[:,:-1], pd.get_dummies(iris.species), epochs=10)
Model
multi inputs, multi outputs
def bind_fn():
input_ = Input(shape=(4,))
mo = Dense(128, activation='relu')(input_)
mo = Dense(64, activation='relu')(mo)
mo = Dense(32, activation='relu')(mo)
mo = Dense(3, activation='softmax')(mo)
model = Model(input_, mo)
model.compile(loss='categorical_crossentropy', optimizer='adam',
metrics=['acc'])
return model
KerasClassifier
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier
kc = KerasClassifier(buind_fn)
kc.fit(iris.iloc[:,:-1], pd.get_dummies(iris.species), epochs=1)
'''
Model: "sequential_5"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
flatten_5 (Flatten) (None, 4) 0
_________________________________________________________________
dense_138 (Dense) (None, 128) 640
_________________________________________________________________
dense_139 (Dense) (None, 64) 8256
_________________________________________________________________
dense_140 (Dense) (None, 32) 2080
_________________________________________________________________
dense_141 (Dense) (None, 3) 99
=================================================================
Total params: 11,075
Trainable params: 11,075
Non-trainable params: 0
_________________________________________________________________
WARNING:tensorflow:Falling back from v2 loop because of error: Failed to find data adapter that can handle input: <class 'pandas.core.frame.DataFrame'>, <class 'NoneType'>
Train on 150 samples
150/150 [==============================] - 0s 761us/sample - loss: 1.0827 - acc: 0.2600
<tensorflow.python.keras.callbacks.History at 0x195855e0048>
'''
from sklearn.model_selection import cross_val_score
cross_val_score(KerasClassifier(bind_fn, epochs=1), iris.iloc[:,:-1], pd.get_dummies(iris.species), cv=10)
'''
array([0.46666667, 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0.26666668, 0. ])
'''
Comments