Как прочитать файл с помощью tenorflow, который загружен django - PullRequest
0 голосов
/ 11 июня 2018

Я загрузил файл, используя django & django rest framework, и это изображение у нас есть InMemoryUploadedFile .Теперь я хочу прочитать этот файл, используя tennorsfow.

serializers.py

class ImageClassificationSerializer(serializers.Serializer):
    image = serializers.ImageField()

views.py

class ImageClassificationView(APIView):
    parser_classes = (MultiPartParser, FormParser)
    serializer_class = ImageClassificationSerializer

    def post(self, request):
        serializer = self.serializer_class(data=request.data)
        if serializer.is_valid():
            input_name = "file_reader"
            file_reader = tensorflow.read_file(serializer.validated_data['image'], input_name)

            print file_reader
        response = {
            "success": True
        }
        return Response(response, status=status.HTTP_200_OK)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

, когда я читаю файл, я получаю нижеупомянутая ошибка:

Expected string passed to parameter 'filename' of op 'ReadFile', got <InMemoryUploadedFile: mobile_image.jpeg (image/jpeg)> of type 'InMemoryUploadedFile' instead.

1 Ответ

0 голосов
/ 11 июня 2018

Похоже, что Tensorflow ожидает имя файла локального файла вместо передаваемого сейчас объекта файла.Вы можете записать загрузку во временный файл и затем передать путь этого файла в Tensorflow, примерно так:

import tempfile
with tempfile.NamedTemporaryFile() as tempfile:
    tempfile.write(serializer.validated_data['image'].read())
    tempfile.flush()
    file_reader = tensorflow.read_file(tempfile.name)

Это не очень эффективный метод, будьте осторожны, если вы загружаете большие файлы.файлы.

...