[英]Transfer Learning with Tensorflow Problem
I am trying to solve a problem for a deep learning class and the block of code i have to modify looks like this我正在尝试解决深度学习 class 的问题,我必须修改的代码块如下所示
def alpaca_model(image_shape=IMG_SIZE, data_augmentation=data_augmenter()):
""" Define a tf.keras model for binary classification out of the MobileNetV2 model
Arguments:
image_shape -- Image width and height
data_augmentation -- data augmentation function
Returns:
tf.keras.model
"""
input_shape = image_shape + (3,)
# START CODE HERE
base_model=tf.keras.applications.MobileNetV2(input_shape=input_shape, include_top=False, weights="imagenet")
# Freeze the base model by making it non trainable
base_model.trainable = None
# create the input layer (Same as the imageNetv2 input size)
inputs = tf.keras.Input(shape=None)
# apply data augmentation to the inputs
x = None
# data preprocessing using the same weights the model was trained on
x = preprocess_input(None)
# set training to False to avoid keeping track of statistics in the batch norm layer
x = base_model(None, training=None)
# Add the new Binary classification layers
# use global avg pooling to summarize the info in each channel
x = None()(x)
#include dropout with probability of 0.2 to avoid overfitting
x = None(None)(x)
# create a prediction layer with one neuron (as a classifier only needs one)
prediction_layer = None
# END CODE HERE
outputs = prediction_layer(x)
model = tf.keras.Model(inputs, outputs)
return model
IMG_SIZE = (160, 160)
def data_augmentation():
data = tl.keras.Sequential()
data.add(RandomFlip("horizontal")
data.add(RandomRotation(0.2)
return data
I tried 3 times starting from that template following the directions and a lot of trial and error.我按照指示和大量试验和错误从该模板开始尝试了 3 次。 I don't know what I am missing.
我不知道我错过了什么。 I have gotten it to the point where it train a model and I can get the summary of it, but the summary is not correct.
我已经达到了训练 model 的程度,我可以得到它的摘要,但摘要不正确。
Please help, I am going crazy trying to figure this out.请帮忙,我疯了想弄清楚这一点。 I know it is super simple, but its the simple problems that trip me up.
我知道这非常简单,但它的简单问题让我感到困惑。
You might have to use the below code to run your algorithm.您可能必须使用以下代码来运行您的算法。
input_shape = image_shape + (3,)
### START CODE HERE
base_model = tf.keras.applications.MobileNetV2(input_shape=input_shape,
include_top=False, # <== Important!!!!
weights='imagenet') # From imageNet
# Freeze the base model by making it non trainable
base_model.trainable = False
# create the input layer (Same as the imageNetv2 input size)
inputs = tf.keras.Input(shape=input_shape)
# apply data augmentation to the inputs
x = data_augmentation(inputs)
# data preprocessing using the same weights the model was trained on
x = preprocess_input(x)
# set training to False to avoid keeping track of statistics in the batch norm layer
x = base_model(x, training=False)
# Add the new Binary classification layers
# use global avg pooling to summarize the info in each channel
x = tf.keras.layers.GlobalAveragePooling2D()(x)
#include dropout with probability of 0.2 to avoid overfitting
x = tf.keras.layers.Dropout(0.2)(x)
# create a prediction layer with one neuron (as a classifier only needs one)
prediction_layer = tf.keras.layers.Dense(1 ,activation='linear')(x)
### END CODE HERE
outputs = prediction_layer
model = tf.keras.Model(inputs, outputs)
I had the same issue but my mistake was putting (x) in the dense layer before the end, here is the code that worked for me:我有同样的问题,但我的错误是在结束之前将 (x) 放在密集层中,这是对我有用的代码:
def alpaca_model(image_shape=IMG_SIZE, data_augmentation=data_augmenter()):
''' Define a tf.keras model for binary classification out of the MobileNetV2 model
Arguments:
image_shape -- Image width and height
data_augmentation -- data augmentation function
Returns:
Returns:
tf.keras.model
'''
input_shape = image_shape + (3,)
### START CODE HERE
base_model = tf.keras.applications.MobileNetV2(input_shape=input_shape,
include_top=False, # <== Important!!!!
weights='imagenet') # From imageNet
# Freeze the base model by making it non trainable
base_model.trainable = False
# create the input layer (Same as the imageNetv2 input size)
inputs = tf.keras.Input(shape=input_shape)
# apply data augmentation to the inputs
x = data_augmentation(inputs)
# data preprocessing using the same weights the model was trained on
x = preprocess_input(x)
# set training to False to avoid keeping track of statistics in the batch norm layer
x = base_model(x, training=False)
# Add the new Binary classification layers
# use global avg pooling to summarize the info in each channel
x = tfl.GlobalAveragePooling2D()(x)
#include dropout with probability of 0.2 to avoid overfitting
x = tfl.Dropout(0.2)(x)
# create a prediction layer with one neuron (as a classifier only needs one)
prediction_layer = tfl.Dense(1, activation = 'linear')
### END CODE HERE
outputs = prediction_layer(x)
model = tf.keras.Model(inputs, outputs)
return model
Under def data augmentation, your brackets are not well closed在 def 数据增强下,您的括号没有很好地闭合
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.