这一节我们主要学习
-
Fizz Buzz in Tensorflow
- 将看似不能训练的通过训练来求解。
- Fizz Buzz:输出 1 到 100,遇 3 的倍数输出 Fizz,遇 5 的倍数输出 Buzz,遇 15 的倍数输出 Fizz Buzz。
- Fizz Buzz in Tensorflow:http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/ 这是个有趣的故事。

from keras.layers.normalization import BatchNormalization
# 感兴趣的同学可以把这个函数写出来
'''
def fizzbuzz(a, b):
return x_train,y_train
'''
x_train,y_train = fizzbuzz(101,1000) #fizzbuzz()此处未做解释,但它是一个将整数转换成十位二进制,并用四维数组表示输出的函数
x_test,y_test = fizzbuzz(1,100)
print(x_train.shape)
print(x_train[0]) #用十位的二进制表示
print(y_train[0]) #array([1, 0, 0, 0]) 四个维度分别代表输出原来的数字、Fizz、 Buzz、 Fizz Buzz
model = Sequential()
model.add(Dense(input_dim=10, output_dim=100))#output_dim=1000 将网络变大,效果变好
model.add(Activation('relu'))
model.add(Dense(output_dim=4))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
model.fit(x_train,y_train,batch_size=20,nb_epoch=100)
result = model.evaluate(x_test,y_test,batch_size=1000)
print('Acc:', format(result[1], '0.2f'))