Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何保存/导出(作为.tf或.tflite)、运行或测试这个Tensorflow卷积神经网络(CNN),并将其训练为python文件?_Python_Tensorflow_Machine Learning_Deep Learning_Neural Network - Fatal编程技术网

如何保存/导出(作为.tf或.tflite)、运行或测试这个Tensorflow卷积神经网络(CNN),并将其训练为python文件?

如何保存/导出(作为.tf或.tflite)、运行或测试这个Tensorflow卷积神经网络(CNN),并将其训练为python文件?,python,tensorflow,machine-learning,deep-learning,neural-network,Python,Tensorflow,Machine Learning,Deep Learning,Neural Network,如何保存、运行或测试这个Tensorflow卷积神经网络(CNN),将其训练为python文件 我希望能够将此模型导出/保存为.tf和.tflite文件,并输入图像进行测试 以下是我的模型的代码: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data import numpy as np DATA_DIR = 'data' NUM_STEPS = 1000 MINIBATCH_SIZ

如何保存、运行或测试这个Tensorflow卷积神经网络(CNN),将其训练为python文件

我希望能够将此模型导出/保存为
.tf
.tflite
文件,并输入图像进行测试

以下是我的模型的代码:

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import numpy as np

DATA_DIR = 'data'
NUM_STEPS = 1000
MINIBATCH_SIZE = 100

def weight_variable(shape):
    initial = tf.truncated_normal(shape, stddev = 0.1)
    return tf.Variable(initial)

def bias_variable(shape):
    initial = tf.constant(0.1, shape=shape)
    return tf.Variable(initial)

def conv2d(x, W):
    return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')

def max_pool_2x2(x):
    return tf.nn.max_pool(x, ksize=[1,2,2,1], strides=[1,2,2,1], padding='SAME')

def conv_later(input, shape):
    W = weight_variable(shape)
    b = bias_variable([shape[3]])
    return tf.nn.relu(conv2d(input, W) + b)

def full_layer(input, size):
    in_size = int(input.get_shape()[1])
    W = weight_variable([in_size, size])
    b = bias_variable([size])
    return tf.matmul(input, W) + b

x = tf.placeholder(tf.float32, shape=[None, 784])
y_ = tf.placeholder(tf.float32, shape=[None, 10])

x_image = tf.reshape(x, [-1, 28, 28, 1])
conv1 = conv_later(x_image, shape=[5,5,1,32])
conv1_pool = max_pool_2x2(conv1)

conv2 = conv_later(conv1_pool, shape=[5,5,32,64])
conv2_pool = max_pool_2x2(conv2)

conv2_flat = tf.reshape(conv2_pool, [-1, 7*7*64])
full_1 = tf.nn.relu(full_layer(conv2_flat, 1024))

keep_prob = tf.placeholder(tf.float32)
full1_drop = tf.nn.dropout(full_1, keep_prob=keep_prob)

y_conv = full_layer(full1_drop, 10)

mnist = input_data.read_data_sets(DATA_DIR, one_hot=True)

cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(y_conv, y_))

train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)

correct_prediction = tf.equal(tf.argmax(y_conv, 1), tf.argmax(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    
    for i in range(NUM_STEPS):
        batch = mnist.train.next_batch(50)
        
        if i % 100 == 0:
            train_accuracy = sess.run(accuracy, feed_dict={x: batch[0], y_: batch[1], keep_prob: 1.0})
            
            print("step {}, training accuracy {}".format(i, train_accuracy))
            
        sess.run(train_step, feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})
        
    X = mnist.test.images.reshape(10, 1000, 784)
    Y = mnist.test.labels.reshape(10, 1000, 10)
    test_accuracy = np.mean([sess.run(accuracy, feed_dict={x:X[i], y_:Y[i], keep_prob:1.0}) for i in range(10)])
    
print("test accuracy: {}".format(test_accuracy))

有人能告诉我如何将此模型保存/导出为
.tf
.tflite
,并测试此模型吗?

目前,Tensorflow 2非常适合使用。因此,我正在发布相关信息,并尽可能地复制您的模型

import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers


fashion_mnist = keras.datasets.fashion_mnist

(train_images, train_labels), (test_images,
                               test_labels) = fashion_mnist.load_data()


train_images = train_images / 255.0
test_images = test_images / 255.0

inputs = keras.Input(shape=(28, 28, 1), name="img")
x = layers.Conv2D(32, 5, activation="relu")(inputs)
x = layers.MaxPooling2D(2)(x)
x = layers.Conv2D(64, 5, activation="relu")(x)
x = layers.MaxPooling2D(2)(x)
x = layers.Flatten()(x)
x = layers.Dense(1024, activation='relu')(x)
x = layers.Dropout(rate=0.5)(x)
outputs = layers.Dense(10, activation='relu')(x)

model = keras.Model(inputs=inputs, outputs=outputs, name="mnist_model")

print(model.summary())

keras.utils.plot_model(
    model, "model.png", show_shapes=True)

model.compile(
    loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
    optimizer=keras.optimizers.Adam(learning_rate=1e-4),
    metrics=["accuracy"],
)

history = model.fit(train_images, train_labels, batch_size=64,
                    epochs=2, validation_split=0.2)

# Saving Model
model.save("model.tf")

model = keras.models.load_model("model.tf")
test_scores = model.evaluate(test_images, test_labels, verbose=2)

print("Test loss:", test_scores[0])
print("Test accuracy:", test_scores[1])

# Convert the model.
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()

# Save the TF Lite model.
with tf.io.gfile.GFile('model.tflite', 'wb') as f:
  f.write(tflite_model)
输出:

Model: "mnist_model"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
img (InputLayer)             [(None, 28, 28, 1)]       0         
_________________________________________________________________
conv2d (Conv2D)              (None, 24, 24, 32)        832       
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 12, 12, 32)        0         
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 8, 8, 64)          51264     
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 4, 4, 64)          0         
_________________________________________________________________
flatten (Flatten)            (None, 1024)              0         
_________________________________________________________________
dense (Dense)                (None, 1024)              1049600   
_________________________________________________________________
dropout (Dropout)            (None, 1024)              0         
_________________________________________________________________
dense_1 (Dense)              (None, 10)                10250     
=================================================================
Total params: 1,111,946
Trainable params: 1,111,946
Non-trainable params: 0
_________________________________________________________________

Epoch 1/2
750/750 [==============================] - 82s 109ms/step - loss: 0.8672 - accuracy: 0.6908 - val_loss: 0.5704 - val_accuracy: 0.7868
Epoch 2/2
750/750 [==============================] - 109s 145ms/step - loss: 0.5553 - accuracy: 0.7936 - val_loss: 0.4854 - val_accuracy: 0.8205
313/313 - 14s - loss: 0.4997 - accuracy: 0.8206
Test loss: 0.4996977150440216
Test accuracy: 0.8205999732017517
模型详细信息: