簡體   English   中英

嘗試將模型從 keras 導出到 CoreML

[英]Trying to export a model from keras to CoreML

這是我第一個使用 keras 的項目。

這個想法是創建一個可以識別木材顏色的模型。 如果一種顏色是我識別的顏色,我會得到1如果不是,我會得到0

我有一個像這樣的csv文件:

red,green,blue,isWood
63,110,255,0
58,104,255,0
63,112,255,0
96,141,198,1
95,140,197,1
95,138,195,1

我根據我在網上找到的幾個教程的組合創建了這個模型。

import pandas as pd

train_df = pd.read_csv('woodData.csv')

train_df.head()

#create a dataframe with all training data except the target column
train_X = train_df.drop(columns=['isWood'])

#check that the target variable has been removed
train_X.head()

#create a dataframe with only the target column
train_y = train_df[['isWood']]

#view dataframe
train_y.head()

from keras.models import Sequential
from keras.layers import Dense
#create model
model = Sequential()

#get number of columns in training data
n_cols = train_X.shape[1]

#add model layers
model.add(Dense(10, activation='relu', input_shape=(n_cols,)))
model.add(Dense(10, activation='relu'))
model.add(Dense(1))

#compile model using mse as a measure of model performance
model.compile(optimizer='adam', loss='mean_squared_error')

# LINE 1
coreml_model = coremltools.converters.keras.convert(model, ['red','green','blue'], 'isWood')
coreml_model.input_description['red'] = 'red value'
coreml_model.input_description['green'] = 'green value'
coreml_model.input_description['blue'] = 'blue value'
coreml_model.output_description['isWood'] = '1 = is wood, 0 is not wood'
coreml_model.save('wood.mlmodel')

此應用程序在線崩潰

coreml_model.input_description['green'] = 'green value'

帶有以下錯誤消息:

Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/coremltools/models/model.py in __setitem__(self, key, value)
     77                 f.shortDescription = value
     78                 return
---> 79         raise AttributeError("No feature with name %s." % key)
     80 
     81     def __iter__(self):

AttributeError: No feature with name green.

我試圖將LINE 1修改為

coreml_model = coremltools.converters.keras.convert(model, input_names=['red','green','blue'], output_names='isWood')

或者

coreml_model = coremltools.converters.keras.convert(model, input_names=['red','green','blue'], output_names=['isWood'])

沒有區別。

有任何想法嗎?

我認為問題在於您的 Keras 模型只有一個輸入(具有 3 個功能),因此您只能在coremltools.converters.keras.convert給出一個輸入名稱。

嘗試將LINE 1替換為以下內容:

coreml_model = coremltools.converters.keras.convert(model, 'rgb-color', 'isWood')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM