神经网络_tensorflow_keras实现


# coding: utf-8

# In[54]:


import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers,Sequential
tf.__version__


# In[55]:


#第一层3个神经元
#第二层两个神经元
network=Sequential([layers.Dense(3),
                   layers.ReLU(),
                   layers.Dense(2,activation=layers.ReLU())])


# In[56]:


x=tf.random.normal([4,3])
print(x)
network(x)


# In[57]:


network.summary()


# In[58]:


model=Sequential()
model.add(layers.Dense(3))
model.add(layers.Dense(3))
model.build((None,4))
model.summary()


# # 简单例子,手写数字识别

# In[59]:


#设计神经网络
#第N层的参数
model=Sequential([
    layers.Dense(256,activation='relu'),
    layers.Dense(128,activation='relu'),
    layers.Dense(64,activation='relu'),
    layers.Dense(32,activation='relu'),
    layers.Dense(10,activation='softmax')
])


# In[60]:


#输入特征数28*28
model.build(input_shape=(None,28*28))
model.summary()


# In[61]:


#优化器,梯度下降
model.compile(optimizer=tf.keras.optimizers.SGD(learning_rate=0.001),loss=tf.keras.losses.CategoricalCrossentropy(),metrics=['accuracy'])


# In[62]:


from tensorflow.examples.tutorials.mnist import input_data
import matplotlib.pyplot as plt
import numpy as np
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
train_data=np.concatenate((mnist.train.images,mnist.train.labels),axis=1)
test_data=np.concatenate((mnist.test.images,mnist.test.labels),axis=1)
np.random.shuffle(train_data)#用的是小批量梯度下降
x_train=train_data[0:30000,0:784]
y_train=train_data[0:30000,784:]
x_test=test_data[:,0:784]
y_test=test_data[:,784:]


# In[63]:


#训练
model.fit(x_train,y_train,epochs=10)


# In[64]:


model.predict(x_test)


# In[65]:


#verbose=0 不显示进度条
model.evaluate(x_test,y_test,verbose=0)


# # 保存训练后的参数数据,并没有保存网络信息,要自己重新构造

# In[66]:


get_ipython().system('dir')


# In[67]:


model.save_weights("weight.ckpt")


# In[68]:


get_ipython().system('dir')


# In[69]:


#第N层的参数
model=Sequential([
    layers.Dense(256,activation='relu'),
    layers.Dense(128,activation='relu'),
    layers.Dense(64,activation='relu'),
    layers.Dense(32,activation='relu'),
    layers.Dense(10,activation='softmax')
])
#优化器,梯度下降
model.compile(optimizer=tf.keras.optimizers.SGD(learning_rate=0.001),loss=tf.keras.losses.CategoricalCrossentropy(),metrics=['accuracy'])


# In[70]:


model.load_weights("weight.ckpt")


# In[71]:


model.evaluate(x_test,y_test,verbose=0)


# # 保存训练后的参数,同时网络的信息也保存进去了,不用重新构造神经网络了

# In[72]:


model.save('model.h5')


# In[73]:


get_ipython().system('dir')


# In[74]:


del model


# In[76]:


model=tf.keras.models.load_model("model.h5")


# In[78]:


model.evaluate(x_test,y_test,verbose=0)


# # 保存训练的模型参数,可以移植到其他平台,但是优化器compile那些要自己构造

# In[ ]:


get_ipython().system('dir')


# In[81]:


tf.keras.experimental.export_saved_model(model,'save_model')


# In[83]:


get_ipython().system('dir')


# In[ ]:


del model


# In[84]:


tf.keras.experimental.load_from_saved_model('save_model')


# In[86]:


model
#只是Sequential,还要添加compile


# In[87]:


#优化器,梯度下降
model.compile(optimizer=tf.keras.optimizers.SGD(learning_rate=0.001),loss=tf.keras.losses.CategoricalCrossentropy(),metrics=['accuracy'])


# In[88]:


model.evaluate(x_test,y_test,verbose=0)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
卷积神经网络(Convolutional Neural Networks, CNNs)是一种用于图像分类、物体检测、语音识别等任务的常见神经网络模型。在TensorFlowKeras中,使用卷积神经网络模型非常简单,下面是一个基本的例子: 首先,导入必要的库: ```python import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers ``` 然后,创建一个卷积神经网络模型: ```python model = keras.Sequential( [ layers.Conv2D(32, (3, 3), activation="relu", input_shape=(28, 28, 1)), layers.MaxPooling2D(pool_size=(2, 2)), layers.Conv2D(64, (3, 3), activation="relu"), layers.MaxPooling2D(pool_size=(2, 2)), layers.Flatten(), layers.Dense(10, activation="softmax"), ] ) ``` 上面的代码创建了一个包含两个卷积层、两个池化层和一个全连接层的卷积神经网络模型。第一个卷积层包含32个卷积核,每个卷积核大小为3x3,使用ReLU作为激活函数。第一个池化层使用2x2的池化窗口。接下来是第二个卷积层和池化层。最后,我们将输出通过Flatten层展开为一维向量,然后通过一个包含10个神经元的全连接层,并使用softmax作为激活函数。 接下来,我们需要编译模型并指定损失函数和优化器: ```python model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"]) ``` 然后,我们可以使用训练数据拟合模型: ```python model.fit(x_train, y_train, batch_size=128, epochs=10, validation_split=0.1) ``` 在上面的代码中,x_train和y_train是训练数据和标签,batch_size是每个批次的样本数,epochs是迭代次数,validation_split是用于验证的数据比例。 最后,我们可以使用测试数据评估模型: ```python test_loss, test_acc = model.evaluate(x_test, y_test) print("Test accuracy:", test_acc) ``` 上面的代码将测试数据x_test和y_test传递给模型,并输出测试准确率。 这就是使用TensorFlowKeras创建卷积神经网络模型的基本步骤。当然,实际应用中可能需要更复杂的网络结构和调整超参数来实现更好的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值