【问题标题】:FLASK PYTHON ModuleNotFoundError: No module named 'tensorflow'FLASK PYTHON ModuleNotFoundError:没有名为“tensorflow”的模块
【发布时间】:2020-11-26 23:23:32
【问题描述】:

我想在我的颤振应用程序中使用卷积神经网络,所以我想使用烧瓶。我用一个简单的函数将烧瓶与 python 集成,它可以工作

@app.route('/', methods = ['GET'])
def index():
    return 'Hi how are you'

然后我创建端点以创建 CNN,但导入开始失败, ModuleNotFoundError:没有名为“tensorflow”的模块 ModuleNotFoundError:没有名为“numpy”的模块 ... 好像我没有python没有??我不知道解决方案,这是代码。谢谢

from flask import Flask;
import numpy as np
import tensorflow as tf
import tensorflow.keras.layers  as KL
import tensorflow.keras.models  as KM
from tensorflow.keras import datasets, layers, models
import matplotlib.pyplot as plt

    import matplotlib.pyplot as plt
    
    import numpy as np # linear algebra
    import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
    
    
    app = Flask(__name__)
    
    @app.route('/', methods = ['GET'])
    def index():
        return 'Hi how are you'
    
    
    @app.route('/train', methods = ['GET'])
    def index():
        mnist = tf.keras.datasets.mnist
        (x_train, y_train), (x_test, y_test) = mnist.load_data()
        x_train, x_test = x_train/255.0, x_test/255.0
        x_train, x_test = np.expand_dims(x_train, axis=-1), np.expand_dims(x_test, axis=-1)
        model = models.Sequential()
    
        model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28,28,1)))
        model.add(layers.MaxPooling2D((2, 2)))
        model.add(layers.Conv2D(64, (3, 3), activation='relu'))
        model.add(layers.MaxPooling2D((2, 2)))
        model.add(layers.Conv2D(64, (3, 3), activation='relu'))
        model.add(layers.Flatten())
        model.add(layers.Dense(64, activation='relu'))
        model.add(layers.Dense(10, activation='softmax'))
    
        model.compile(optimizer='adam',
                  loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
                  metrics=['accuracy'])
    
        history = model.fit(x_train, y_train, epochs=5,
                        validation_data=(x_test, y_test))
    
        return model
    
 

【问题讨论】:

  • 你确定你安装了吗?
  • 是的,我安装了我做了一个简单的例子

标签: python numpy flutter tensorflow flask


【解决方案1】:

不!不要那样做! 通常你会:

  • 离线开发和训练你的模型(除非你不断地重新训练,这是另一种情况)

  • 将模型保存到文件(想想工件)

  • 然后开发一个尽可能精简的后端(Flask 是一个不错的选择)来进行推理(运行模型)并将数据提供给用户(使用你的 Flutter 应用的用户)。

怎么做:

  • 安装 tensorflow(支持 keras)。
  • 将 /train 方法中的代码移动到 train.py 文件中。
  • train.py文件末尾添加model.save('model_name.h5')

现在更改烧瓶后端:

  • 需要在后端启动时加载模型文件。model = tf.keras.models.load_model('model_name.h5')
  • 添加一个烧瓶方法来进行推理 (/predict)。简而言之:获取您收到的输入,对其进行一些清理(拒绝空值和奇怪的东西),使用 `model_output = model.predict(input_data)' 进行预测,最后将模型输出调整为您可以在 Flutter 中处理的内容.

【讨论】:

  • 嘿,谢谢你的回答,但如果我想用用户上传的图像创建一个 CNN?就像你说的(除非你不断地再训练,这是另一种情况)这是什么情况??
  • @PaulBombay 你通常在情况变化非常快的情况下使用持续的再训练(一个后台过程抓取样本并训练一个检测异常的模型,然后检查其性能并部署如果它足够好的话)。
  • 我想要的是用用户拍摄的照片创建一个 CNN,这样我就可以先训练模型,然后导出模型(离线开发和训练你的模型),我做不到, 那么解决方案是什么??
【解决方案2】:

您使用的是哪个版本的 Python?如果您使用的是 Python 2.7,则 Tensroflow 可能无法正常工作。

【讨论】:

  • 我使用python 3.9
猜你喜欢
  • 1970-01-01
  • 2019-08-02
  • 1970-01-01
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
相关资源
最近更新 更多